Skip to content

Commit 435ccaf

Browse files
committed
stream filters: only accept array params for write_seek_mode param
This is in order to remove usage of HASH_OF() and interpreting objects as arrays within PHP As this is a new parameter, there is no BC break.
1 parent 570c15a commit 435ccaf

2 files changed

Lines changed: 6 additions & 7 deletions

File tree

main/streams/filter.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -277,26 +277,25 @@ PHPAPI php_stream_filter *_php_stream_filter_alloc(const php_stream_filter_ops *
277277
}
278278

279279
PHPAPI zend_result php_stream_filter_parse_write_seek_mode(
280-
zval *filterparams,
280+
const zval *filterparams,
281281
php_stream_filter_seekable_t *write_seekable)
282282
{
283283
*write_seekable = PSFS_SEEKABLE_ALWAYS;
284284

285285
if (filterparams == NULL) {
286286
return SUCCESS;
287287
}
288-
if (Z_TYPE_P(filterparams) != IS_ARRAY && Z_TYPE_P(filterparams) != IS_OBJECT) {
288+
if (Z_TYPE_P(filterparams) != IS_ARRAY) {
289289
return SUCCESS;
290290
}
291291

292-
zval *tmp = zend_hash_str_find_ind(HASH_OF(filterparams),
293-
"write_seek_mode", sizeof("write_seek_mode") - 1);
294-
if (tmp == NULL) {
292+
const zval *write_seek_mode = zend_hash_str_find(Z_ARR_P(filterparams), ZEND_STRL("write_seek_mode"));
293+
if (write_seek_mode == NULL) {
295294
return SUCCESS;
296295
}
297296

298297
zend_string *tmp_str;
299-
zend_string *str = zval_get_tmp_string(tmp, &tmp_str);
298+
const zend_string *str = zval_get_tmp_string(write_seek_mode, &tmp_str);
300299
zend_result result = SUCCESS;
301300

302301
if (zend_string_equals_literal(str, "preserve")) {

main/streams/php_stream_filter_api.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ PHPAPI void php_stream_filter_free(php_stream_filter *filter);
144144
PHPAPI php_stream_filter *_php_stream_filter_alloc(const php_stream_filter_ops *fops,
145145
void *abstract, bool persistent, php_stream_filter_seekable_t read_seekable,
146146
php_stream_filter_seekable_t write_seekable STREAMS_DC);
147-
PHPAPI zend_result php_stream_filter_parse_write_seek_mode(zval *filterparams,
147+
PHPAPI zend_result php_stream_filter_parse_write_seek_mode(const zval *filterparams,
148148
php_stream_filter_seekable_t *write_seekable);
149149
PHPAPI int php_stream_filter_get_chain_type(php_stream *stream, php_stream_filter *filter);
150150

0 commit comments

Comments
 (0)