--- parser3/src/main/compile.y 2003/01/31 14:03:53 1.204.2.4 +++ parser3/src/main/compile.y 2003/03/11 14:58:33 1.204.2.7 @@ -5,7 +5,7 @@ Copyright (c) 2001, 2003 ArtLebedev Group (http://www.artlebedev.com) Author: Alexander Petrosyan (http://design.ru/paf) - $Id: compile.y,v 1.204.2.4 2003/01/31 14:03:53 paf Exp $ + $Id: compile.y,v 1.204.2.7 2003/03/11 14:58:33 paf Exp $ */ /** @@ -46,8 +46,6 @@ static int yylex(YYSTYPE *lvalp, void *p // local convinient inplace typecast & var #define PC (*(parse_control *)pc) #define POOL (*PC.pool) -#undef NEW -#define NEW new(POOL) #ifndef DOXYGEN %} @@ -148,10 +146,11 @@ control_method: '@' STRING '\n' // new class' name StringPtr name=LA2S(*strings_code); // creating the class - PC.cclass=VStateless_classPtr(new VClass); + VStateless_classPtr cclass(new VClass); + PC.cclass=cclass.get(); PC.cclass->set_name(name); // append to request's classes - PC.request->classes().put(name, PC.cclass); + PC.request->classes().put(name, cclass); } else { strcpy(PC.error, "@"CLASS_NAME" must contain sole name"); YYERROR; @@ -171,7 +170,7 @@ control_method: '@' STRING '\n' if(ValuePtr base_class_value=PC.request->classes().get(base_name)) { // @CLASS == @BASE sanity check if(VStateless_class *base_class=base_class_value->get_class()) { - if(PC.cclass.get()==base_class) { + if(PC.cclass==base_class) { strcpy(PC.error, "@"CLASS_NAME" equals @"BASE_NAME); YYERROR; } @@ -1320,5 +1319,5 @@ static int real_yyerror(parse_control *p static void yyprint(FILE *file, int type, YYSTYPE value) { if(type==STRING) - fprintf(file, " \"%s\"", LA2S(*value)->cstr()); + fprintf(file, " \"%s\"", LA2S(*value)->cstr().get()); }