mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* regparse.c (PFETCH_READY): suppress Wunused-but-set-variable.
* regparse.c (is_onechar_cclass): restructured to clarify that c is used iff found == 1. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36072 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
114ae69b45
commit
bad859ca3e
2 changed files with 24 additions and 23 deletions
|
@ -1,3 +1,10 @@
|
|||
Thu Jun 14 05:23:05 2012 NARUSE, Yui <naruse@ruby-lang.org>
|
||||
|
||||
* regparse.c (PFETCH_READY): suppress Wunused-but-set-variable.
|
||||
|
||||
* regparse.c (is_onechar_cclass): restructured to clarify that c is
|
||||
used iff found == 1.
|
||||
|
||||
Thu Jun 14 02:54:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
|
||||
|
||||
* configure.in: use -fbuiltin with -ansi -std=iso9899:199409.
|
||||
|
|
40
regparse.c
40
regparse.c
|
@ -264,8 +264,8 @@ strdup_with_null(OnigEncoding enc, UChar* s, UChar* end)
|
|||
#define PEND_VALUE 0
|
||||
|
||||
#ifdef __GNUC__
|
||||
/* get rid of Wunused-but-set-variable */
|
||||
#define PFETCH_READY UChar* pfetch_prev = NULL
|
||||
/* get rid of Wunused-but-set-variable and Wuninitialized */
|
||||
#define PFETCH_READY UChar* pfetch_prev = NULL; (void)pfetch_prev
|
||||
#else
|
||||
#define PFETCH_READY UChar* pfetch_prev
|
||||
#endif
|
||||
|
@ -5684,10 +5684,9 @@ countbits(unsigned int bits)
|
|||
static int
|
||||
is_onechar_cclass(CClassNode* cc, OnigCodePoint* code)
|
||||
{
|
||||
OnigCodePoint c;
|
||||
OnigCodePoint c; /* c is used iff found == 1 */
|
||||
int found = 0;
|
||||
int i, j = -1;
|
||||
Bits b1, b2;
|
||||
int i;
|
||||
BBuf *bbuf = cc->mbuf;
|
||||
|
||||
if (IS_NCCLASS_NOT(cc)) return 0;
|
||||
|
@ -5699,42 +5698,37 @@ is_onechar_cclass(CClassNode* cc, OnigCodePoint* code)
|
|||
data = (OnigCodePoint* )(bbuf->p) + 1;
|
||||
if ((n == 1) && (data[0] == data[1])) {
|
||||
/* only one char found in the bbuf, save the code point. */
|
||||
found = 1;
|
||||
c = data[0];
|
||||
if ((c >= SINGLE_BYTE_SIZE) || !BITSET_AT(cc->bs, c)) {
|
||||
/* set found=1 if c is not included in the bitset */
|
||||
found = 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return 0; /* the bbuf contains multiple chars */
|
||||
}
|
||||
}
|
||||
|
||||
if (found && (c < SINGLE_BYTE_SIZE) && BITSET_AT(cc->bs, c)) {
|
||||
/* c is included in the bitset, ignore the result of bbuf. */
|
||||
found = 0;
|
||||
}
|
||||
|
||||
/* check bitset */
|
||||
for (i = 0; i < (int )BITSET_SIZE; i++) {
|
||||
b1 = cc->bs[i];
|
||||
Bits b1 = cc->bs[i];
|
||||
if (b1 != 0) {
|
||||
if (((b1 & (b1 - 1)) == 0) && (found == 0)) {
|
||||
found = 1;
|
||||
j = i;
|
||||
b2 = b1;
|
||||
c = BITS_IN_ROOM * i + countbits(b1 - 1);
|
||||
} else {
|
||||
return 0; /* the character class contains multiple chars */
|
||||
}
|
||||
}
|
||||
}
|
||||
if (found == 0) {
|
||||
/* the character class contains no char. */
|
||||
return 0;
|
||||
|
||||
if (found) {
|
||||
*code = c;
|
||||
return 1;
|
||||
}
|
||||
if (j >= 0) {
|
||||
/* only one char found in the bitset, calculate the code point. */
|
||||
c = BITS_IN_ROOM * j + countbits(b2 - 1);
|
||||
}
|
||||
*code = c;
|
||||
return 1;
|
||||
|
||||
/* the character class contains no char. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue