mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-25 05:21:16 +00:00
Lemon update 2013-10-02 20:46:30 on branch trunk
- In the lemon parser generator, change all hashes to unsigned to avoid potential problems with signed integer overflow. (user: drh)
This commit is contained in:
parent
c5e4f05fe2
commit
249aed455b
1 changed files with 19 additions and 19 deletions
|
@ -3426,7 +3426,7 @@ void print_stack_union(
|
|||
int maxdtlength; /* Maximum length of any ".datatype" field. */
|
||||
char *stddt; /* Standardized name for a datatype */
|
||||
int i,j; /* Loop counters */
|
||||
int hash; /* For hashing the name of a type */
|
||||
unsigned hash; /* For hashing the name of a type */
|
||||
const char *name; /* Name of the parser */
|
||||
|
||||
/* Allocate and initialize types[] and allocate stddt[] */
|
||||
|
@ -4270,9 +4270,9 @@ int SetUnion(char *s1, char *s2)
|
|||
** Code for processing tables in the LEMON parser generator.
|
||||
*/
|
||||
|
||||
PRIVATE int strhash(const char *x)
|
||||
PRIVATE unsigned strhash(const char *x)
|
||||
{
|
||||
int h = 0;
|
||||
unsigned h = 0;
|
||||
while( *x ) h = h*13 + *(x++);
|
||||
return h;
|
||||
}
|
||||
|
@ -4345,8 +4345,8 @@ void Strsafe_init(){
|
|||
int Strsafe_insert(const char *data)
|
||||
{
|
||||
x1node *np;
|
||||
int h;
|
||||
int ph;
|
||||
unsigned h;
|
||||
unsigned ph;
|
||||
|
||||
if( x1a==0 ) return 0;
|
||||
ph = strhash(data);
|
||||
|
@ -4400,7 +4400,7 @@ int Strsafe_insert(const char *data)
|
|||
** if no such key. */
|
||||
const char *Strsafe_find(const char *key)
|
||||
{
|
||||
int h;
|
||||
unsigned h;
|
||||
x1node *np;
|
||||
|
||||
if( x1a==0 ) return 0;
|
||||
|
@ -4511,8 +4511,8 @@ void Symbol_init(){
|
|||
int Symbol_insert(struct symbol *data, const char *key)
|
||||
{
|
||||
x2node *np;
|
||||
int h;
|
||||
int ph;
|
||||
unsigned h;
|
||||
unsigned ph;
|
||||
|
||||
if( x2a==0 ) return 0;
|
||||
ph = strhash(key);
|
||||
|
@ -4568,7 +4568,7 @@ int Symbol_insert(struct symbol *data, const char *key)
|
|||
** if no such key. */
|
||||
struct symbol *Symbol_find(const char *key)
|
||||
{
|
||||
int h;
|
||||
unsigned h;
|
||||
x2node *np;
|
||||
|
||||
if( x2a==0 ) return 0;
|
||||
|
@ -4642,9 +4642,9 @@ PRIVATE int statecmp(struct config *a, struct config *b)
|
|||
}
|
||||
|
||||
/* Hash a state */
|
||||
PRIVATE int statehash(struct config *a)
|
||||
PRIVATE unsigned statehash(struct config *a)
|
||||
{
|
||||
int h=0;
|
||||
unsigned h=0;
|
||||
while( a ){
|
||||
h = h*571 + a->rp->index*37 + a->dot;
|
||||
a = a->bp;
|
||||
|
@ -4710,8 +4710,8 @@ void State_init(){
|
|||
int State_insert(struct state *data, struct config *key)
|
||||
{
|
||||
x3node *np;
|
||||
int h;
|
||||
int ph;
|
||||
unsigned h;
|
||||
unsigned ph;
|
||||
|
||||
if( x3a==0 ) return 0;
|
||||
ph = statehash(key);
|
||||
|
@ -4767,7 +4767,7 @@ int State_insert(struct state *data, struct config *key)
|
|||
** if no such key. */
|
||||
struct state *State_find(struct config *key)
|
||||
{
|
||||
int h;
|
||||
unsigned h;
|
||||
x3node *np;
|
||||
|
||||
if( x3a==0 ) return 0;
|
||||
|
@ -4797,9 +4797,9 @@ struct state **State_arrayof()
|
|||
}
|
||||
|
||||
/* Hash a configuration */
|
||||
PRIVATE int confighash(struct config *a)
|
||||
PRIVATE unsigned confighash(struct config *a)
|
||||
{
|
||||
int h=0;
|
||||
unsigned h=0;
|
||||
h = h*571 + a->rp->index*37 + a->dot;
|
||||
return h;
|
||||
}
|
||||
|
@ -4852,8 +4852,8 @@ void Configtable_init(){
|
|||
int Configtable_insert(struct config *data)
|
||||
{
|
||||
x4node *np;
|
||||
int h;
|
||||
int ph;
|
||||
unsigned h;
|
||||
unsigned ph;
|
||||
|
||||
if( x4a==0 ) return 0;
|
||||
ph = confighash(data);
|
||||
|
|
Loading…
Reference in a new issue