4
4
#include "code.h"
5
5
#include "structmember.h"
6
6
7
- #define NAME_CHARS \
8
- "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"
9
-
10
7
/* Holder for co_extra information */
11
8
typedef struct {
12
9
Py_ssize_t ce_size ;
@@ -18,23 +15,26 @@ typedef struct {
18
15
static int
19
16
all_name_chars (PyObject * o )
20
17
{
21
- static char ok_name_char [256 ];
22
- static const unsigned char * name_chars = (unsigned char * )NAME_CHARS ;
18
+ /* [a-zA-Z0-9_] */
19
+ static const bool ok_name_char [128 ] = {
20
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
21
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
22
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
23
+ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ,
24
+ 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
25
+ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 1 ,
26
+ 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ,
27
+ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0
28
+ };
23
29
const unsigned char * s , * e ;
24
30
25
- if (!PyUnicode_Check (o ) || PyUnicode_READY (o ) == -1 ||
26
- !PyUnicode_IS_ASCII (o ))
31
+ if (PyUnicode_READY (o ) == -1 || !PyUnicode_IS_ASCII (o ))
27
32
return 0 ;
28
33
29
- if (ok_name_char [* name_chars ] == 0 ) {
30
- const unsigned char * p ;
31
- for (p = name_chars ; * p ; p ++ )
32
- ok_name_char [* p ] = 1 ;
33
- }
34
34
s = PyUnicode_1BYTE_DATA (o );
35
35
e = s + PyUnicode_GET_LENGTH (o );
36
- while ( s != e ) {
37
- if (ok_name_char [* s ++ ] == 0 )
36
+ for (; s != e ; s ++ ) {
37
+ if (! ok_name_char [* s ] )
38
38
return 0 ;
39
39
}
40
40
return 1 ;
0 commit comments