]> mj.ucw.cz Git - umpf.git/commitdiff
hura!
authorAnicka Bernathova <anicka@anicka.net>
Wed, 2 Jul 2008 13:32:14 +0000 (15:32 +0200)
committerAnicka Bernathova <anicka@anicka.net>
Wed, 2 Jul 2008 13:32:14 +0000 (15:32 +0200)
cond.y

diff --git a/cond.y b/cond.y
index 746dc40fb4cd5543fed1c65469d4df024edf808d..0155cbd353b24091ca7189972af03819652d23ee 100644 (file)
--- a/cond.y
+++ b/cond.y
@@ -41,6 +41,7 @@ boo:   CONST EQ CONST         { $$ = ! strcmp($1, $3); }
 %%
 
 #include <ctype.h>
+#include <stdlib.h>
 
 #define BUFSIZE 4096
 
@@ -48,24 +49,26 @@ int
 yylex(void)
 {
 
-       int c, last;
-       char temp[BUFSIZE];
-       char* p=temp;
+       int i, c, last;
        
        while ((c = getchar ()) == ' ' || c == '\t');
        
        if (c == '"'){
                last = '"';
+               i = 0;
+               if (!(yylval.str = malloc(BUFSIZE))){
+                       puts("Low memory");
+                       exit(0);
+               }
                while ((c = getchar()) != '"' || last == '\\'){
-                       *p = c;
+                       yylval.str[i] = c;
                        last = c;
-                       p++;
-                       if (p-temp >= BUFSIZE-1)
+                       i++;
+                       if (i >= BUFSIZE-1)
                                break;
                }       
-               *p = '\0';
+               yylval.str[i] = '\0';
        
-               strcpy(&yylval,temp);
                return CONST;   
        }