@@ -171,7 +171,6 @@ expand_constant(VipsImage *match_image, zval *constant)
171
171
ones [i ] = 1.0 ;
172
172
173
173
if ((ele = zend_hash_index_find (Z_ARRVAL_P (constant ), i )) != NULL ) {
174
- convert_to_double_ex (ele );
175
174
offsets [i ] = zval_get_double (ele );
176
175
}
177
176
}
@@ -183,8 +182,6 @@ expand_constant(VipsImage *match_image, zval *constant)
183
182
result = x ;
184
183
}
185
184
else {
186
- convert_to_double_ex (constant );
187
-
188
185
if (vips_linear1 (result , & x , 1.0 , zval_get_double (constant ), NULL )) {
189
186
return NULL ;
190
187
}
@@ -274,7 +271,6 @@ matrix_from_zval(zval *array)
274
271
zval * ele ;
275
272
276
273
ele = zend_hash_index_find (Z_ARRVAL_P (row ), x );
277
- convert_to_double_ex (ele );
278
274
* VIPS_MATRIX (mat , x , y ) = zval_get_double (ele );
279
275
}
280
276
}
@@ -317,15 +313,17 @@ vips_php_zval_to_gval(VipsImage *match_image, zval *zvalue, GValue *gvalue)
317
313
GType fundamental = G_TYPE_FUNDAMENTAL (type );
318
314
319
315
VipsImage * image ;
316
+ zend_string * zstr ;
320
317
int enum_value ;
321
318
322
319
switch (fundamental ) {
323
320
case G_TYPE_STRING :
324
321
/* These are GStrings, vips refstrings are handled by boxed, see
325
322
* below.
326
323
*/
327
- convert_to_string_ex (zvalue );
328
- g_value_set_string (gvalue , Z_STRVAL_P (zvalue ));
324
+ zstr = zval_get_string (zvalue );
325
+ g_value_set_string (gvalue , ZSTR_VAL (zstr ));
326
+ zend_string_release (zstr );
329
327
break ;
330
328
331
329
case G_TYPE_OBJECT :
@@ -346,55 +344,57 @@ vips_php_zval_to_gval(VipsImage *match_image, zval *zvalue, GValue *gvalue)
346
344
break ;
347
345
348
346
case G_TYPE_INT :
349
- convert_to_long_ex (zvalue );
350
- g_value_set_int (gvalue , Z_LVAL_P (zvalue ));
347
+ g_value_set_int (gvalue , zval_get_long (zvalue ));
351
348
break ;
352
349
353
350
case G_TYPE_UINT64 :
354
- convert_to_long_ex (zvalue );
355
- g_value_set_uint64 (gvalue , Z_LVAL_P (zvalue ));
351
+ g_value_set_uint64 (gvalue , zval_get_long (zvalue ));
356
352
break ;
357
353
358
354
case G_TYPE_BOOLEAN :
359
- convert_to_boolean (zvalue );
360
- g_value_set_boolean (gvalue , Z_LVAL_P (zvalue ));
355
+ g_value_set_boolean (gvalue , zval_get_long (zvalue ));
361
356
break ;
362
357
363
358
case G_TYPE_ENUM :
364
359
if (Z_TYPE_P (zvalue ) == IS_LONG ) {
365
360
enum_value = Z_LVAL_P (zvalue );
366
361
}
362
+ else if (Z_TYPE_P (zvalue ) == IS_DOUBLE ) {
363
+ enum_value = Z_DVAL_P (zvalue );
364
+ }
367
365
else {
368
- convert_to_string_ex (zvalue );
369
- if ((enum_value = vips_enum_from_nick ("enum" ,
370
- type , Z_STRVAL_P (zvalue ))) < 0 ) {
366
+ zstr = zval_get_string (zvalue );
367
+ enum_value = vips_enum_from_nick ("enum" , type , ZSTR_VAL (zstr ));
368
+ if (enum_value < 0 ) {
369
+ zend_string_release (zstr );
371
370
return -1 ;
372
371
}
372
+ zend_string_release (zstr );
373
373
}
374
374
g_value_set_enum (gvalue , enum_value );
375
375
break ;
376
376
377
377
case G_TYPE_FLAGS :
378
- convert_to_long_ex (zvalue );
379
- g_value_set_flags (gvalue , Z_LVAL_P (zvalue ));
378
+ g_value_set_flags (gvalue , zval_get_long (zvalue ));
380
379
break ;
381
380
382
381
case G_TYPE_DOUBLE :
383
- convert_to_double_ex (zvalue );
384
- g_value_set_double (gvalue , Z_DVAL_P (zvalue ));
382
+ g_value_set_double (gvalue , zval_get_double (zvalue ));
385
383
break ;
386
384
387
385
case G_TYPE_BOXED :
388
386
if (type == VIPS_TYPE_REF_STRING ) {
389
- convert_to_string_ex (zvalue );
390
- vips_value_set_ref_string (gvalue , Z_STRVAL_P (zvalue ));
387
+ zstr = zval_get_string (zvalue );
388
+ vips_value_set_ref_string (gvalue , ZSTR_VAL (zstr ));
389
+ zend_string_release (zstr );
391
390
}
392
391
else if (type == VIPS_TYPE_BLOB ) {
393
392
void * buf ;
394
393
395
- convert_to_string_ex (zvalue );
396
- buf = g_malloc (Z_STRLEN_P (zvalue ));
397
- memcpy (buf , Z_STRVAL_P (zvalue ), Z_STRLEN_P (zvalue ));
394
+ zstr = zval_get_string (zvalue );
395
+ buf = g_malloc (ZSTR_LEN (zstr ));
396
+ memcpy (buf , ZSTR_VAL (zstr ), ZSTR_LEN (zstr ));
397
+ zend_string_release (zstr );
398
398
399
399
vips_value_set_blob (gvalue ,
400
400
vips_php_blob_free , buf , Z_STRLEN_P (zvalue ));
@@ -418,15 +418,13 @@ vips_php_zval_to_gval(VipsImage *match_image, zval *zvalue, GValue *gvalue)
418
418
for (i = 0 ; i < n ; i ++ ) {
419
419
zval * ele ;
420
420
421
- if ((ele = zend_hash_index_find (Z_ARRVAL_P (zvalue ),
422
- i )) != NULL ) {
423
- convert_to_long_ex (ele );
421
+ ele = zend_hash_index_find (Z_ARRVAL_P (zvalue ), i );
422
+ if (ele ) {
424
423
arr [i ] = zval_get_long (ele );
425
424
}
426
425
}
427
426
}
428
427
else {
429
- convert_to_long_ex (zvalue );
430
428
arr [0 ] = zval_get_long (zvalue );
431
429
}
432
430
}
@@ -449,15 +447,13 @@ vips_php_zval_to_gval(VipsImage *match_image, zval *zvalue, GValue *gvalue)
449
447
for (i = 0 ; i < n ; i ++ ) {
450
448
zval * ele ;
451
449
452
- if ((ele = zend_hash_index_find (Z_ARRVAL_P (zvalue ),
453
- i )) != NULL ) {
454
- convert_to_double_ex (ele );
450
+ ele = zend_hash_index_find (Z_ARRVAL_P (zvalue ), i );
451
+ if (ele ) {
455
452
arr [i ] = zval_get_double (ele );
456
453
}
457
454
}
458
455
}
459
456
else {
460
- convert_to_double_ex (zvalue );
461
457
arr [0 ] = zval_get_double (zvalue );
462
458
}
463
459
}
@@ -481,20 +477,24 @@ vips_php_zval_to_gval(VipsImage *match_image, zval *zvalue, GValue *gvalue)
481
477
for (i = 0 ; i < n ; i ++ ) {
482
478
zval * ele ;
483
479
484
- if ((ele = zend_hash_index_find (Z_ARRVAL_P (zvalue ),
485
- i )) != NULL &&
486
- (image = (VipsImage * )
487
- zend_fetch_resource (Z_RES_P (ele ),
488
- "GObject" , le_gobject )) != NULL ) {
480
+ ele = zend_hash_index_find (Z_ARRVAL_P (zvalue ), i );
481
+ if (ele ) {
482
+ image = (VipsImage * )
483
+ zend_fetch_resource (
484
+ Z_RES_P (ele ), "GObject" , le_gobject );
485
+ }
486
+ if (ele &&
487
+ image ) {
489
488
arr [i ] = image ;
490
489
g_object_ref (image );
491
490
}
492
491
}
493
492
}
494
493
else {
495
- if ( (image = (VipsImage * )
496
- zend_fetch_resource (Z_RES_P (zvalue ),
497
- "GObject" , le_gobject )) != NULL ) {
494
+ image = (VipsImage * )
495
+ zend_fetch_resource (
496
+ Z_RES_P (zvalue ), "GObject" , le_gobject );
497
+ if (image ) {
498
498
arr [0 ] = image ;
499
499
g_object_ref (image );
500
500
}
@@ -1160,8 +1160,9 @@ PHP_FUNCTION(vips_image_new_from_array)
1160
1160
zval * ele ;
1161
1161
1162
1162
ele = zend_hash_index_find (Z_ARRVAL_P (array ), x );
1163
- convert_to_double_ex (ele );
1164
- * VIPS_MATRIX (mat , x , 0 ) = zval_get_double (ele );
1163
+ if (ele ) {
1164
+ * VIPS_MATRIX (mat , x , 0 ) = zval_get_double (ele );
1165
+ }
1165
1166
}
1166
1167
}
1167
1168
0 commit comments