]> www.ginac.de Git - ginac.git/blobdiff - ginac/parser/parser.cpp
Fix the compliation error *for real*
[ginac.git] / ginac / parser / parser.cpp
index d639bfe1465f1f693c627c3ec03c7ddf610f7403..78a03f81df0401f9f220f4955c276f0c036e5240 100644 (file)
@@ -68,14 +68,17 @@ ex parser::parse_identifier_expr()
        }
        // dirty hack to distinguish between serial numbers of functions and real
        // pointers.
+       GiNaC::function* f = NULL;
        try {
-               GiNaC::function f(reinterpret_cast<unsigned>(reader->second), args);
-               return f;
+               unsigned serial = (unsigned)(unsigned long)(void *)(reader->second);
+               f = new GiNaC::function(serial, args);
        }
        catch ( std::runtime_error ) {
+               if ( f ) delete f;
                ex ret = reader->second(args);
                return ret;
        }
+       return f->setflag(status_flags::dynallocated);
 }
 
 /// paren_expr:  '(' expression ')'