Skip to content

Commit 8dedec5

Browse files
committed
Properly restore FFI_G(persistent)
1 parent 976608c commit 8dedec5

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

ext/ffi/ffi.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3295,7 +3295,7 @@ static zend_ffi *zend_ffi_load(const char *filename, bool preload) /* {{{ */
32953295
zend_ffi_symbol *sym;
32963296
zend_ffi_tag *tag;
32973297
void *addr;
3298-
bool persistent = false;
3298+
bool persistent = false, old_persistent;
32993299

33003300
if (stat(filename, &buf) != 0) {
33013301
if (preload) {
@@ -3342,6 +3342,8 @@ static zend_ffi *zend_ffi_load(const char *filename, bool preload) /* {{{ */
33423342
}
33433343
}
33443344

3345+
old_persistent = FFI_G(persistent);
3346+
33453347
FFI_G(symbols) = NULL;
33463348
FFI_G(tags) = NULL;
33473349
FFI_G(persistent) = preload;
@@ -3355,7 +3357,7 @@ static zend_ffi *zend_ffi_load(const char *filename, bool preload) /* {{{ */
33553357
code_pos = zend_ffi_parse_directives(filename, ZSTR_VAL(code), &scope_name, &lib, preload);
33563358
if (!code_pos) {
33573359
zend_string_release(code);
3358-
FFI_G(persistent) = 0;
3360+
FFI_G(persistent) = old_persistent;
33593361
return NULL;
33603362
}
33613363
code_size -= code_pos - ZSTR_VAL(code);
@@ -3553,7 +3555,7 @@ static zend_ffi *zend_ffi_load(const char *filename, bool preload) /* {{{ */
35533555
zend_string_release(code);
35543556
FFI_G(symbols) = NULL;
35553557
FFI_G(tags) = NULL;
3556-
FFI_G(persistent) = persistent;
3558+
FFI_G(persistent) = old_persistent;
35573559

35583560
return ffi;
35593561

0 commit comments

Comments
 (0)