Browse Source

* patch from C Western for #7232

git-svn-id: trunk@4481 -
florian 19 years ago
parent
commit
2228ec7fb0
1 changed files with 7 additions and 10 deletions
  1. 7 10
      compiler/symdef.pas

+ 7 - 10
compiler/symdef.pas

@@ -4834,7 +4834,7 @@ implementation
          proctypesinfo : byte;
          propnameitem  : tpropnamelistitem;
 
-      procedure writeproc(proc : tsymlist; shiftvalue : byte);
+      procedure writeproc(proc : tsymlist; shiftvalue : byte; unsetvalue: byte);
 
         var
            typvalue : byte;
@@ -4844,7 +4844,7 @@ implementation
         begin
            if not(assigned(proc) and assigned(proc.firstsym))  then
              begin
-                current_asmdata.asmlists[al_rtti].concat(Tai_const.create(aitconst_ptr,0));
+                current_asmdata.asmlists[al_rtti].concat(Tai_const.create(aitconst_ptr,unsetvalue));
                 typvalue:=3;
              end
            else if proc.firstsym^.sym.typ=fieldvarsym then
@@ -4910,16 +4910,13 @@ implementation
              else
                proctypesinfo:=0;
              current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_sym(tstoreddef(tpropertysym(sym).proptype.def).get_rtti_label(fullrtti)));
-             writeproc(tpropertysym(sym).readaccess,0);
-             writeproc(tpropertysym(sym).writeaccess,2);
-             { isn't it stored ? }
+             writeproc(tpropertysym(sym).readaccess,0,0);
+             writeproc(tpropertysym(sym).writeaccess,2,0);
+             { is it stored ? }
              if not(ppo_stored in tpropertysym(sym).propoptions) then
-               begin
-                  current_asmdata.asmlists[al_rtti].concat(Tai_const.create_sym(nil));
-                  proctypesinfo:=proctypesinfo or (3 shl 4);
-               end
+               writeproc(nil,4,0) { no, so put a constant zero }
              else
-               writeproc(tpropertysym(sym).storedaccess,4);
+               writeproc(tpropertysym(sym).storedaccess,4,1); { maybe; if no procedure put a constant 1 (=true) }
              current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_32bit(tpropertysym(sym).index));
              current_asmdata.asmlists[al_rtti].concat(Tai_const.Create_32bit(tpropertysym(sym).default));
              propnameitem:=searchpropnamelist(tpropertysym(sym).name);