[Python-bugs-list] [ python-Bugs-530285 ] redefining SRE_CODE in Modules/sre.h

noreply@sourceforge.net noreply@sourceforge.net
Sun, 17 Mar 2002 14:10:05 -0800


Bugs item #530285, was opened at 2002-03-15 13:44
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=530285&group_id=5470

Category: Regular Expressions
Group: Python 2.2.1 candidate
Status: Open
>Resolution: Accepted
Priority: 5
Submitted By: Neal Norwitz (nnorwitz)
Assigned to: Fredrik Lundh (effbot)
Summary: redefining SRE_CODE in Modules/sre.h

Initial Comment:
Taken from Modules/sre.h:

/* size of a code word (must be unsigned short or
   larger, and
   large enough to hold a Py_UNICODE character) */
#ifdef Py_UNICODE_WIDE
#define SRE_CODE unsigned long
#else
#define SRE_CODE unsigned short
#endif

#define SRE_CODE unsigned short

------------------

SRE_CODE is always an unsigned short.

----------------------------------------------------------------------

>Comment By: Fredrik Lundh (effbot)
Date: 2002-03-17 23:10

Message:
Logged In: YES 
user_id=38376

as neal points out, the 3rd define (after the #endif)
should be removed.

(my CVS workspace is broken right now, so I cannot
patch this myself -- at least not tonight...)

</F>

----------------------------------------------------------------------

Comment By: Neal Norwitz (nnorwitz)
Date: 2002-03-15 19:05

Message:
Logged In: YES 
user_id=33168

Regardless of the value of Py_UNICODE_WIDE, SRE_CODE will be
defined to unsigned short after the #ifdef because of the
#define after the #ifdef.

There is actually a warning produced that SRE_CODE is
redefined if Py_UNICODE_WIDE is set.

If SRE_CODE needs to be differerent, the 3rd #define of
SRE_CODE should be removed.  I tried this a while ago and
purify reported more errors.  (purify is still broken, so I
can't give any current info.)

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2002-03-15 18:50

Message:
Logged In: YES 
user_id=21627

What do you mean with "SRE_CODE is always an unsigned
short"; if sre.h defines it as something different, it is
different.

It also needs to be different for Py_UNICODE_WIDE: For
SRE_OP_LITERAL, a Py_UNICODE is the argument. If Py_UNICODE
is 4 bytes, SRE_CODE must be also four bytes.

----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=530285&group_id=5470