@@ -3909,19 +3909,22 @@ PHP_FUNCTION(exif_read_data)
3909
3909
Reads the embedded thumbnail */
3910
3910
PHP_FUNCTION (exif_thumbnail )
3911
3911
{
3912
- zval * * p_name , * * p_width , * * p_height , * * p_imagetype ;
3913
- int ret , arg_c = ZEND_NUM_ARGS ();
3912
+ zval * p_width , * p_height , * p_imagetype ;
3913
+ char * p_name ;
3914
+ int p_name_len , ret , arg_c = ZEND_NUM_ARGS ();
3914
3915
image_info_type ImageInfo ;
3915
3916
3916
3917
memset (& ImageInfo , 0 , sizeof (ImageInfo ));
3917
3918
3918
- if (( arg_c != 1 && arg_c != 3 && arg_c != 4 ) || zend_get_parameters_ex ( arg_c , & p_name , & p_width , & p_height , & p_imagetype ) == FAILURE ) {
3919
+ if (arg_c != 1 && arg_c != 3 && arg_c != 4 ) {
3919
3920
WRONG_PARAM_COUNT ;
3920
3921
}
3921
3922
3922
- convert_to_string_ex (p_name );
3923
+ if (zend_parse_parameters (arg_c TSRMLS_CC , "s|z/z/z/" , & p_name , & p_name_len , & p_width , & p_height , & p_imagetype ) == FAILURE ) {
3924
+ return ;
3925
+ }
3923
3926
3924
- ret = exif_read_file (& ImageInfo , Z_STRVAL_PP ( p_name ) , 1 , 0 TSRMLS_CC );
3927
+ ret = exif_read_file (& ImageInfo , p_name , 1 , 0 TSRMLS_CC );
3925
3928
if (ret == FALSE) {
3926
3929
RETURN_FALSE ;
3927
3930
}
@@ -3943,11 +3946,14 @@ PHP_FUNCTION(exif_thumbnail)
3943
3946
if (!ImageInfo .Thumbnail .width || !ImageInfo .Thumbnail .height ) {
3944
3947
exif_scan_thumbnail (& ImageInfo TSRMLS_CC );
3945
3948
}
3946
- ZVAL_LONG (* p_width , ImageInfo .Thumbnail .width );
3947
- ZVAL_LONG (* p_height , ImageInfo .Thumbnail .height );
3949
+ zval_dtor (p_width );
3950
+ zval_dtor (p_height );
3951
+ ZVAL_LONG (p_width , ImageInfo .Thumbnail .width );
3952
+ ZVAL_LONG (p_height , ImageInfo .Thumbnail .height );
3948
3953
}
3949
3954
if (arg_c >= 4 ) {
3950
- ZVAL_LONG (* p_imagetype , ImageInfo .Thumbnail .filetype );
3955
+ zval_dtor (p_imagetype );
3956
+ ZVAL_LONG (p_imagetype , ImageInfo .Thumbnail .filetype );
3951
3957
}
3952
3958
3953
3959
#ifdef EXIF_DEBUG
@@ -3957,7 +3963,7 @@ PHP_FUNCTION(exif_thumbnail)
3957
3963
exif_discard_imageinfo (& ImageInfo );
3958
3964
3959
3965
#ifdef EXIF_DEBUG
3960
- php_error_docref1 (NULL TSRMLS_CC , Z_STRVAL_PP ( p_name ) , E_NOTICE , "done ");
3966
+ php_error_docref1 (NULL TSRMLS_CC , p_name , E_NOTICE , "done ");
3961
3967
#endif
3962
3968
}
3963
3969
/* }}} */
0 commit comments