|
@@ -178,7 +178,11 @@
|
|
|
tmpi2:=nil;
|
|
|
if Assigned(S) and ((TObject(S).GetInterfaceWeak(IUnknown,tmpi2) and (IUnknown(tmpi2).QueryInterface(IID,tmpi)=S_OK)) or
|
|
|
TObject(S).GetInterface(IID,tmpi)) then
|
|
|
- pointer(fpc_class_cast_intf):=tmpi
|
|
|
+ begin
|
|
|
+ // decrease reference count
|
|
|
+ fpc_class_cast_intf:=nil;
|
|
|
+ pointer(fpc_class_cast_intf):=tmpi
|
|
|
+ end
|
|
|
else
|
|
|
fpc_class_cast_intf:=nil;
|
|
|
end;
|
|
@@ -204,6 +208,8 @@
|
|
|
tmpi:=nil;
|
|
|
if IUnknown(S).QueryInterface(iid,tmpi)<>S_OK then
|
|
|
handleerror(219);
|
|
|
+ // decrease reference count
|
|
|
+ fpc_intf_as:=nil;
|
|
|
pointer(fpc_intf_as):=tmpi;
|
|
|
end
|
|
|
else
|
|
@@ -237,6 +243,8 @@
|
|
|
tmpi2:=nil;
|
|
|
if not ((TObject(S).GetInterfaceWeak(IUnknown,tmpi2) and (IUnknown(tmpi2).QueryInterface(IID,tmpi)=S_OK)) or TObject(S).GetInterface(IID,tmpi)) then
|
|
|
handleerror(219);
|
|
|
+ // decrease reference count
|
|
|
+ fpc_class_as_intf:=nil;
|
|
|
pointer(fpc_class_as_intf):=tmpi;
|
|
|
end
|
|
|
else
|