Browse Source

Use a buffer on the stack.

Daniel Buckmaster 10 years ago
parent
commit
5a66f00697
1 changed files with 6 additions and 4 deletions
  1. 6 4
      Engine/source/console/CMDgram.y

+ 6 - 4
Engine/source/console/CMDgram.y

@@ -458,16 +458,18 @@ expr
       { $$ = (ExprNode*)VarNode::alloc( $1.lineNumber, $1.value, $3 ); }
    | rwDEFINE '(' var_list_decl ')' '{' statement_list '}'
       {
-         String fnname = String("__anonymous_function_" + String::ToString(gAnonFunctionID++));
-         StringTableEntry afnName = StringTable->insert(fnname.c_str());
-         StmtNode *fndef = FunctionDeclStmtNode::alloc($1.lineNumber, afnName, NULL, $3, $6);
+         const U32 bufLen = 64;
+         UTF8 buffer[bufLen];
+         dSprintf(buffer, bufLen, "__anonymous_function%d", gAnonFunctionID++);
+         StringTableEntry fName = StringTable->insert(buffer);
+         StmtNode *fndef = FunctionDeclStmtNode::alloc($1.lineNumber, fName, NULL, $3, $6);
 
          if(!gAnonFunctionList)
             gAnonFunctionList = fndef;
          else
             gAnonFunctionList->append(fndef);
 
-         $$ = StrConstNode::alloc( $1.lineNumber, (UTF8*)fnname.utf8(), false );
+         $$ = StrConstNode::alloc( $1.lineNumber, (UTF8*)fName, false );
       }
    ;