@@ -346,42 +346,49 @@ static php_stream_filter *php_zlib_filter_create(const char *filtername, zval *f
346
346
347
347
348
348
if (filterparams ) {
349
- zval * tmpzval ;
350
349
zend_long tmp ;
351
350
352
351
/* filterparams can either be a scalar value to indicate compression level (shortcut method)
353
352
Or can be a hash containing one or more of 'window', 'memory', and/or 'level' members. */
354
353
355
354
switch (Z_TYPE_P (filterparams )) {
356
355
case IS_ARRAY :
357
- case IS_OBJECT :
358
- if ((tmpzval = zend_hash_str_find (HASH_OF (filterparams ), "memory" , sizeof ("memory" ) - 1 ))) {
356
+ case IS_OBJECT : {
357
+ zval * tmpzval ;
358
+ const HashTable * filter_params_ht = HASH_OF (filterparams );
359
+ ZEND_ASSERT (filter_params_ht != NULL );
360
+
361
+ tmpzval = zend_hash_str_find (filter_params_ht , ZEND_STRL ("memory" ));
362
+ if (tmpzval != NULL ) {
359
363
/* Memory Level (1 - 9) */
360
364
tmp = zval_get_long (tmpzval );
361
365
if (tmp < 1 || tmp > MAX_MEM_LEVEL ) {
362
366
php_error_docref (NULL , E_WARNING , "Invalid parameter given for memory level (" ZEND_LONG_FMT ")" , tmp );
363
367
} else {
364
- memLevel = tmp ;
368
+ memLevel = ( int ) tmp ;
365
369
}
366
370
}
367
371
368
- if ((tmpzval = zend_hash_str_find (HASH_OF (filterparams ), "window" , sizeof ("window" ) - 1 ))) {
372
+ tmpzval = zend_hash_str_find (filter_params_ht , ZEND_STRL ("window" ));
373
+ if (tmpzval != NULL ) {
369
374
/* log-2 base of history window (9 - 15) */
370
375
tmp = zval_get_long (tmpzval );
371
376
if (tmp < - MAX_WBITS || tmp > MAX_WBITS + 16 ) {
372
377
php_error_docref (NULL , E_WARNING , "Invalid parameter given for window size (" ZEND_LONG_FMT ")" , tmp );
373
378
} else {
374
- windowBits = tmp ;
379
+ windowBits = ( int ) tmp ;
375
380
}
376
381
}
377
382
378
- if ((tmpzval = zend_hash_str_find (HASH_OF (filterparams ), "level" , sizeof ("level" ) - 1 ))) {
383
+ tmpzval = zend_hash_str_find (filter_params_ht , ZEND_STRL ("level" ));
384
+ if (tmpzval != NULL ) {
379
385
tmp = zval_get_long (tmpzval );
380
386
381
387
/* Pseudo pass through to catch level validating code */
382
388
goto factory_setlevel ;
383
389
}
384
390
break ;
391
+ }
385
392
case IS_STRING :
386
393
case IS_DOUBLE :
387
394
case IS_LONG :
0 commit comments