Browse Source

Revert "* ported mechanism from unit activex to deal with ansi/unicode -> widestring conversion."

This reverts commit 1208f4d5b9a5157cf205c71d9244fb9bf41ad15d
Marco Van de Voort 2 months ago
parent
commit
f23dbc2ecb
1 changed files with 3 additions and 63 deletions
  1. 3 63
      packages/rtl-objpas/src/inc/variants.pp

+ 3 - 63
packages/rtl-objpas/src/inc/variants.pp

@@ -376,10 +376,6 @@ uses
   VarUtils;
 {$ENDIF FPC_DOTTEDUNITS}
 
-{$IFDEF MSWINDOWS}
-procedure SysFreeString(bstr:pointer); stdcall; external 'oleaut32.dll' name 'SysFreeString';
-{$ENDIF}
-
 var
   customvarianttypes    : array of TCustomVariantType;
   customvarianttypelock : trtlcriticalsection;
@@ -4107,9 +4103,7 @@ var
   arg_data: PVarData;
   dummy_data: TVarData;
   arg_advanced: boolean;
-  i : integer;
-  nextstring: integer;
-  StringMap : array[0..255] of record passtr : pansistring; paswstr : punicodestring; comstr : pwidechar; end;
+
 const
   argtype_mask = $7F;
   argref_mask = $80;
@@ -4117,8 +4111,6 @@ begin
   arg_count := CallDesc^.ArgCount;
   method_name := ansistring(PAnsiChar(@CallDesc^.ArgTypes[arg_count]));
   setLength(args, arg_count);
-  nextstring:=0;
-  try
   if arg_count > 0 then
   begin
     arg_ptr := Params;
@@ -4135,29 +4127,8 @@ begin
       end;
       if arg_byref then
       begin
-        case arg_type of
-          varStrArg:  begin
-                       StringMap[NextString].ComStr:=StringToOleStr(PAnsiString(ppointer(arg_ptr)^)^);
-                       StringMap[NextString].PasStr:=PAnsiString(ppointer(arg_ptr)^);
-                       StringMap[NextString].PasWStr:=nil;
-                       arg_data^.vType := arg_data^.vType or varByRef;
-                       arg_data^.volestr:=StringMap[NextString].ComStr;
-                       inc(NextString);
-                      end;
-          varUStrArg:  begin
-                       StringMap[NextString].ComStr:=StringToOleStr(PUnicodeString(ppointer(arg_ptr)^)^);
-                       StringMap[NextString].PasStr:=nil;
-                       StringMap[NextString].PasWStr:=PUnicodeString(ppointer(arg_ptr)^);
-                       arg_data^.vType := arg_data^.vType or varByRef;
-                       arg_data^.volestr:=StringMap[NextString].ComStr;
-                       inc(NextString);
-                      end;
-          else
-            begin
-             arg_data^.vType := arg_data^.vType or varByRef;
-             arg_data^.vPointer := PPointer(arg_ptr)^;
-             end;
-          end;
+        arg_data^.vType := arg_data^.vType or varByRef;
+        arg_data^.vPointer := PPointer(arg_ptr)^;
         Inc(arg_ptr,sizeof(Pointer));
       end
       else
@@ -4196,22 +4167,6 @@ begin
               arg_data^.vByte := PLongint(arg_ptr)^;
             varWord:
               arg_data^.vWord := PLongint(arg_ptr)^;
-            varStrArg:  begin
-                         StringMap[NextString].ComStr:=StringToOleStr(PAnsiString(arg_ptr)^);
-                         StringMap[NextString].PasStr:=nil;
-                         StringMap[NextString].PasWStr:=Nil;
-                         arg_data^.volestr:=StringMap[NextString].ComStr;
-                         inc(NextString);
-                        end;
-            varUStrArg:  begin
-                         StringMap[NextString].ComStr:=StringToOleStr(PunicodeString(arg_ptr)^);
-                         StringMap[NextString].PasStr:=nil;
-                         StringMap[NextString].PasWStr:=Nil;
-                         arg_data^.volestr:=StringMap[NextString].ComStr;
-                         inc(NextString);
-                        end;
-
-
             else
               arg_data^.vAny := PPointer(arg_ptr)^; // 32 or 64bit
           end;
@@ -4272,21 +4227,6 @@ begin
   else
     RaiseDispError;
   end;
-    { translate strings back }
-    for i:=0 to NextString-1 do begin
-      if assigned(StringMap[i].passtr) then
-        OleStrToStrVar(StringMap[i].comstr,StringMap[i].passtr^)
-      else if assigned(StringMap[i].paswstr) then
-        OleStrToStrVar(StringMap[i].comstr,StringMap[i].paswstr^);
-    end;
- finally
-    for i:=0 to NextString-1 do
-      {$ifdef MSWindows}
-      SysFreeString(StringMap[i].ComStr);
-      {$else}
-      dispose(StringMap[i].ComStr);
-      {$endif}
-    end;
 end;
 
 function TInvokeableVariantType.DoFunction(var Dest: TVarData; const V: TVarData; const Name: AnsiString; const Arguments: TVarDataArray): Boolean;