Browse Source

* fixed web bug #1693 (dynarray support for length)

Jonas Maebe 24 years ago
parent
commit
4490bc91f7
1 changed files with 20 additions and 2 deletions
  1. 20 2
      compiler/ninl.pas

+ 20 - 2
compiler/ninl.pas

@@ -1480,7 +1480,21 @@ implementation
                                                      s32bittype);
                                                      s32bittype);
                             result:=hp;
                             result:=hp;
                             goto myexit;
                             goto myexit;
-                          end;
+                          end
+                        else
+                          begin
+                            { can't use inserttypeconv because we need }
+                            { an explicit type conversion (JM)         }
+                            hp := ctypeconvnode.create(left,voidpointertype);
+                            hp.toggleflag(nf_explizit);
+                            hp := ccallparanode.create(hp,nil);
+                            result := ccallnode.createintern('fpc_dynarray_length',hp);
+                            { make sure the left node doesn't get disposed, since it's }
+                            { reused in the new node (JM)                              }
+                            left:=nil;
+                            resulttypepass(result);
+                            exit;
+                          end;  
                       end;
                       end;
                     else
                     else
                       CGMessage(type_e_mismatch);
                       CGMessage(type_e_mismatch);
@@ -1748,6 +1762,7 @@ implementation
                                 { make sure the left node doesn't get disposed, since it's }
                                 { make sure the left node doesn't get disposed, since it's }
                                 { reused in the new node (JM)                              }
                                 { reused in the new node (JM)                              }
                                 left:=nil;
                                 left:=nil;
+                                resulttypepass(result);
                               end
                               end
                            else
                            else
                             begin
                             begin
@@ -2293,7 +2308,10 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.63  2001-10-24 16:17:36  jonas
+  Revision 1.64  2001-12-03 14:21:34  jonas
+    * fixed web bug 1693 (dynarray support for length)
+
+  Revision 1.63  2001/10/24 16:17:36  jonas
     * fixed web bug 1621 (write(typed_file,function_call) works again)
     * fixed web bug 1621 (write(typed_file,function_call) works again)
     * allow write(typed_file,procvar_call) too (it was already allowed for
     * allow write(typed_file,procvar_call) too (it was already allowed for
       text file writes)
       text file writes)