Skip to content

Commit c33db95

Browse files
committed
Try to fix shmdt call
1 parent 2149b0f commit c33db95

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

ext/sysvshm/sysvshm.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,11 +195,20 @@ PHP_FUNCTION(shm_attach)
195195
PHP_FUNCTION(shm_detach)
196196
{
197197
zval *shm_id;
198+
sysvshm_shm *shm_list_ptr;
198199

199200
if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS(), "O", &shm_id, sysvshm_ce)) {
200201
RETURN_THROWS();
201202
}
202203

204+
shm_list_ptr = Z_SYSVSHM_P(shm_id);
205+
if (!shm_list_ptr->ptr) {
206+
RETURN_TRUE;
207+
}
208+
209+
shmdt((void *) shm_list_ptr->ptr);
210+
shm_list_ptr->ptr = NULL;
211+
203212
RETURN_TRUE;
204213
}
205214
/* }}} */
@@ -216,7 +225,6 @@ PHP_FUNCTION(shm_remove)
216225
}
217226

218227
shm_list_ptr = Z_SYSVSHM_P(shm_id);
219-
220228
if (!shm_list_ptr->ptr) {
221229
RETURN_TRUE;
222230
}
@@ -226,9 +234,6 @@ PHP_FUNCTION(shm_remove)
226234
RETURN_FALSE;
227235
}
228236

229-
shmdt((void *) shm_list_ptr->ptr);
230-
shm_list_ptr->ptr = NULL;
231-
232237
RETURN_TRUE;
233238
}
234239
/* }}} */

0 commit comments

Comments
 (0)