From ef069c750387b572676d14910e79ca1f329368af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Thu, 11 Nov 1999 19:27:12 +0100 Subject: [PATCH] Fixed leak. Rev: src/lexer.h:1.10 --- src/lexer.h | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/lexer.h b/src/lexer.h index ac317fc479..8dababc2c5 100644 --- a/src/lexer.h +++ b/src/lexer.h @@ -1,5 +1,5 @@ /* - * $Id: lexer.h,v 1.9 1999/10/26 17:52:47 noring Exp $ + * $Id: lexer.h,v 1.10 1999/11/11 18:27:12 grubba Exp $ * * Lexical analyzer template. * Based on lex.c 1.62 @@ -423,17 +423,21 @@ static int low_yylex(YYSTYPE *yylval) } else if(GOBBLE('x') || GOBBLE('X')) { + struct svalue sval; base = 16; read_based_number: - debug_malloc_pass( yylval->n=mkintnode(0) ); - wide_string_to_svalue_inumber(&yylval->n->u.sval, + sval.type = T_INT; + sval.subtype = NUMBER_NUMBER; + sval.u.integer = 0; + wide_string_to_svalue_inumber(&sval, lex.pos, (void **)&lex.pos, base, 0, SHIFT); - free_string(yylval->n->type); - yylval->n->type=get_type_of_svalue(&yylval->n->u.sval); + dmalloc_touch_svalue(&sval); + yylval->n = mksvaluenode(&sval); + free_svalue(&sval); return F_NUMBER; } } @@ -444,6 +448,8 @@ static int low_yylex(YYSTYPE *yylval) char *p1, *p2; double f; long l; + struct svalue sval; + lex.pos -= (1<<SHIFT); if(INDEX_CHARP(lex.pos, 0, SHIFT)=='0') for(l=1;INDEX_CHARP(lex.pos, l, SHIFT)<='9' && @@ -453,16 +459,19 @@ static int low_yylex(YYSTYPE *yylval) f=lex_strtod(lex.pos, &p1); - debug_malloc_pass( yylval->n=mkintnode(0) ); - wide_string_to_svalue_inumber(&yylval->n->u.sval, + sval.type = T_INT; + sval.subtype = NUMBER_NUMBER; + sval.u.integer = 0; + + wide_string_to_svalue_inumber(&sval, lex.pos, (void **)&p2, 0, 0, SHIFT); - - free_string(yylval->n->type); - yylval->n->type=get_type_of_svalue(&yylval->n->u.sval); + dmalloc_touch_svalue(&sval); + yylval->n = mksvaluenode(&sval); + free_svalue(&sval); if(p1>p2) { -- GitLab