@@ -876,7 +876,7 @@ procedure CheckZendErrors;
876
876
zend_ini_deactivate : function(TSRMLS_D : pointer) : integer; cdecl;
877
877
878
878
function GetGlobalResource (resource_name: AnsiString) : pointer;
879
-
879
+ function GetGlobalResourceDC (resource_name: AnsiString;TSRMLS_DC:pointer) : pointer;
880
880
function GetCompilerGlobals : Pzend_compiler_globals;
881
881
function GetExecutorGlobals : pzend_executor_globals;
882
882
function GetAllocGlobals : pointer;
@@ -1595,10 +1595,13 @@ function ZendToVariant(const Value: pppzval): Variant; overload;
1595
1595
S: String;
1596
1596
begin
1597
1597
case { $IFDEF PHP7} Value ^^^.u1.v._type { $ELSE} Value ^^^._type{ $ENDIF} of
1598
+ 0 : Result := Null;
1598
1599
1 : Result := Value ^^^.value .lval;
1599
1600
2 : Result := Value ^^^.value .dval;
1600
- 6 : begin S := Value ^^^.value .str.val; Result := S; end ;
1601
- 4 ,5 : Result := Null;
1601
+ 3 : Result := boolean(Value ^^^.value .lval);
1602
+ 8 : begin S := Value ^^^.value .str.val; Result := S; end ;
1603
+ 6 : begin S := Value ^^^.value .str.val; Result := S; end
1604
+ else Result := Null;
1602
1605
end ;
1603
1606
end ;
1604
1607
@@ -3631,6 +3634,31 @@ function GetGlobalResource(resource_name: AnsiString) : pointer;
3631
3634
end ;
3632
3635
end ;
3633
3636
3637
+ function GetGlobalResourceDC (resource_name: AnsiString;TSRMLS_DC:pointer) : pointer;
3638
+ var
3639
+ global_id : pointer;
3640
+ global_value : integer;
3641
+ global_ptr : pointer;
3642
+ begin
3643
+ Result := nil ;
3644
+ try
3645
+ global_id := GetProcAddress(PHPLib, zend_pchar(resource_name));
3646
+ if Assigned(global_id) then
3647
+ begin
3648
+ global_value := integer(global_id^);
3649
+ asm
3650
+ mov ecx, global_value
3651
+ mov edx, dword ptr TSRMLS_DC
3652
+ mov eax, dword ptr [edx]
3653
+ mov ecx, dword ptr [eax+ecx*4 -4 ]
3654
+ mov global_ptr, ecx
3655
+ end ;
3656
+ Result := global_ptr;
3657
+ end ;
3658
+ except
3659
+ Result := nil ;
3660
+ end ;
3661
+ end ;
3634
3662
3635
3663
function GetCompilerGlobals : Pzend_compiler_globals;
3636
3664
begin
0 commit comments