Browse Source

* fixed crash

peter 26 years ago
parent
commit
9abbb34b34
1 changed files with 12 additions and 10 deletions
  1. 12 10
      compiler/pexpr.pas

+ 12 - 10
compiler/pexpr.pas

@@ -537,8 +537,7 @@ unit pexpr;
     procedure handle_procvar(procvar : pprocvardef;var t : ptree);
     procedure handle_procvar(procvar : pprocvardef;var t : ptree);
 
 
       begin
       begin
-         if (t^.treetype=calln) and
-            ((procvar^.options and pomethodpointer)<>0) then
+         if ((procvar^.options and pomethodpointer)<>0) then
            begin
            begin
               if (t^.methodpointer^.resulttype^.deftype=objectdef) and
               if (t^.methodpointer^.resulttype^.deftype=objectdef) and
                  (pobjectdef(t^.methodpointer^.resulttype)^.isclass) and
                  (pobjectdef(t^.methodpointer^.resulttype)^.isclass) and
@@ -1946,12 +1945,15 @@ unit pexpr;
     begin
     begin
       p:=comp_expr(true);
       p:=comp_expr(true);
       do_firstpass(p);
       do_firstpass(p);
-      if (p^.treetype<>ordconstn) and
-         (p^.resulttype^.deftype=orddef) and
-         not(Porddef(p^.resulttype)^.typ in [uvoid,uchar,bool8bit,bool16bit,bool32bit]) then
-        Message(cg_e_illegal_expression)
-      else
-        get_intconst:=p^.value;
+      if not codegenerror then
+       begin
+         if (p^.treetype<>ordconstn) and
+            (p^.resulttype^.deftype=orddef) and
+           not(Porddef(p^.resulttype)^.typ in [uvoid,uchar,bool8bit,bool16bit,bool32bit]) then
+          Message(cg_e_illegal_expression)
+         else
+          get_intconst:=p^.value;
+       end;
       disposetree(p);
       disposetree(p);
     end;
     end;
 
 
@@ -1980,8 +1982,8 @@ unit pexpr;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.102  1999-05-06 10:13:20  peter
-    * check for calln in handle_procvar
+  Revision 1.103  1999-05-06 21:40:16  peter
+    * fixed crash
 
 
   Revision 1.101  1999/05/06 09:05:21  peter
   Revision 1.101  1999/05/06 09:05:21  peter
     * generic write_float and str_float
     * generic write_float and str_float