> On May 13, 2021, at 2:38 PM, Sven Barth <pascaldra...@googlemail.com> wrote:
> 
> Ah, you need to use ChangeOwnerAndName then and simply pass in the same name 
> you used for the constructor (cause otherwise it tries to use the name that 
> is currently stored in the list).

Looking at this again today and I have yet another question to confirm. I 
create one of the types using ctypesym.create but the others were just 
references from the system unit. We only want to change owner of the symbol I 
create, right? Not the system unit ones? If not changing owner maybe we need to 
add some ref count or something? just confirming to make sure.

function create_unamed_typesym(def:tdef): tsym;
        var
          newtype: tsym;
        begin
          newtype:=nil;
          if is_conststring_array(def) then
            begin
              { for constant strings we need to respect various modeswitches }
              if (cs_refcountedstrings in current_settings.localswitches) then
                begin
                  if m_default_unicodestring in current_settings.modeswitches 
then
                    newtype:=cunicodestringtype.typesym
                  else
                    newtype:=cansistringtype.typesym;
                end
              else
                newtype:=cshortstringtype.typesym;
            end
          else if def.typ=stringdef then
            newtype:=tstringdef(def).get_default_string_type.typesym
          else
            begin
              newtype:=ctypesym.create(def.typename,def);
              newtype.owner:=def.owner;
            end;
          if newtype=nil then
            internalerror(2021020904);
          result:=newtype;
        end;

Regards,
        Ryan Joseph

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to