Skip to content

Commit e188e41

Browse files
committed
Use ZEND_TRY_ASSIGN_REF_... macros for arguments passed to internal function by reference
1 parent eef351b commit e188e41

File tree

23 files changed

+300
-166
lines changed

23 files changed

+300
-166
lines changed

Zend/zend_API.h

+170-32
Original file line numberDiff line numberDiff line change
@@ -675,9 +675,9 @@ ZEND_API int zend_try_assign_typed_ref_res(zend_reference *ref, zend_resource *r
675675
ZEND_API int zend_try_assign_typed_ref_zval(zend_reference *ref, zval *zv);
676676
ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, zend_bool strict);
677677

678-
#define ZEND_TRY_ASSIGN_NULL(zv) do { \
678+
#define _ZEND_TRY_ASSIGN_NULL(zv, is_ref) do { \
679679
zval *_zv = zv; \
680-
if (EXPECTED(Z_ISREF_P(_zv))) { \
680+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
681681
zend_reference *ref = Z_REF_P(_zv); \
682682
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
683683
zend_try_assign_typed_ref_null(ref); \
@@ -689,9 +689,17 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
689689
ZVAL_NULL(_zv); \
690690
} while (0)
691691

692-
#define ZEND_TRY_ASSIGN_FALSE(zv) do { \
692+
#define ZEND_TRY_ASSIGN_NULL(zv) \
693+
_ZEND_TRY_ASSIGN_NULL(zv, 0)
694+
695+
#define ZEND_TRY_ASSIGN_REF_NULL(zv) do { \
696+
ZEND_ASSERT(Z_ISREF_P(zv)); \
697+
_ZEND_TRY_ASSIGN_NULL(zv, 1); \
698+
} while (0)
699+
700+
#define _ZEND_TRY_ASSIGN_FALSE(zv, is_ref) do { \
693701
zval *_zv = zv; \
694-
if (EXPECTED(Z_ISREF_P(_zv))) { \
702+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
695703
zend_reference *ref = Z_REF_P(_zv); \
696704
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
697705
zend_try_assign_typed_ref_bool(ref, 0); \
@@ -703,9 +711,17 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
703711
ZVAL_FALSE(_zv); \
704712
} while (0)
705713

706-
#define ZEND_TRY_ASSIGN_TRUE(zv) do { \
714+
#define ZEND_TRY_ASSIGN_FASLE(zv) \
715+
_ZEND_TRY_ASSIGN_FALSE(zv, 0)
716+
717+
#define ZEND_TRY_ASSIGN_REF_FALSE(zv) do { \
718+
ZEND_ASSERT(Z_ISREF_P(zv)); \
719+
_ZEND_TRY_ASSIGN_FALSE(zv, 1); \
720+
} while (0)
721+
722+
#define _ZEND_TRY_ASSIGN_TRUE(zv, is_ref) do { \
707723
zval *_zv = zv; \
708-
if (EXPECTED(Z_ISREF_P(_zv))) { \
724+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
709725
zend_reference *ref = Z_REF_P(_zv); \
710726
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
711727
zend_try_assign_typed_ref_bool(ref, 1); \
@@ -717,9 +733,17 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
717733
ZVAL_TRUE(_zv); \
718734
} while (0)
719735

720-
#define ZEND_TRY_ASSIGN_BOOL(zv, bval) do { \
736+
#define ZEND_TRY_ASSIGN_TRUE(zv) \
737+
_ZEND_TRY_ASSIGN_TRUE(zv, 0)
738+
739+
#define ZEND_TRY_ASSIGN_REF_TRUE(zv) do { \
740+
ZEND_ASSERT(Z_ISREF_P(zv)); \
741+
_ZEND_TRY_ASSIGN_TRUE(zv, 1); \
742+
} while (0)
743+
744+
#define _ZEND_TRY_ASSIGN_BOOL(zv, bval, is_ref) do { \
721745
zval *_zv = zv; \
722-
if (EXPECTED(Z_ISREF_P(_zv))) { \
746+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
723747
zend_reference *ref = Z_REF_P(_zv); \
724748
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
725749
zend_try_assign_typed_ref_bool(ref, 1); \
@@ -731,9 +755,17 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
731755
ZVAL_BOOL(_zv, bval); \
732756
} while (0)
733757

734-
#define ZEND_TRY_ASSIGN_LONG(zv, lval) do { \
758+
#define ZEND_TRY_ASSIGN_BOOL(zv, bval) \
759+
_ZEND_TRY_ASSIGN_BOOL(zv, bval, 0)
760+
761+
#define ZEND_TRY_ASSIGN_REF_BOOL(zv, bval) do { \
762+
ZEND_ASSERT(Z_ISREF_P(zv)); \
763+
_ZEND_TRY_ASSIGN_BOOL(zv, bval, 1); \
764+
} while (0)
765+
766+
#define _ZEND_TRY_ASSIGN_LONG(zv, lval, is_ref) do { \
735767
zval *_zv = zv; \
736-
if (EXPECTED(Z_ISREF_P(_zv))) { \
768+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
737769
zend_reference *ref = Z_REF_P(_zv); \
738770
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
739771
zend_try_assign_typed_ref_long(ref, lval); \
@@ -745,9 +777,17 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
745777
ZVAL_LONG(_zv, lval); \
746778
} while (0)
747779

748-
#define ZEND_TRY_ASSIGN_DOUBLE(zv, dval) do { \
780+
#define ZEND_TRY_ASSIGN_LONG(zv, lval) \
781+
_ZEND_TRY_ASSIGN_LONG(zv, lval, 0)
782+
783+
#define ZEND_TRY_ASSIGN_REF_LONG(zv, lval) do { \
784+
ZEND_ASSERT(Z_ISREF_P(zv)); \
785+
_ZEND_TRY_ASSIGN_LONG(zv, lval, 1); \
786+
} while (0)
787+
788+
#define _ZEND_TRY_ASSIGN_DOUBLE(zv, dval, is_ref) do { \
749789
zval *_zv = zv; \
750-
if (EXPECTED(Z_ISREF_P(_zv))) { \
790+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
751791
zend_reference *ref = Z_REF_P(_zv); \
752792
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
753793
zend_try_assign_typed_ref_double(ref, dval); \
@@ -759,9 +799,17 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
759799
ZVAL_DOUBLE(_zv, dval); \
760800
} while (0)
761801

762-
#define ZEND_TRY_ASSIGN_EMPTY_STRING(zv) do { \
802+
#define ZEND_TRY_ASSIGN_DOUBLE(zv, dval) \
803+
_ZEND_TRY_ASSIGN_DOUBLE(zv, dval, 0)
804+
805+
#define ZEND_TRY_ASSIGN_REF_DOUBLE(zv, dval) do { \
806+
ZEND_ASSERT(Z_ISREF_P(zv)); \
807+
_ZEND_TRY_ASSIGN_DOUBLE(zv, dval, 1); \
808+
} while (0)
809+
810+
#define _ZEND_TRY_ASSIGN_EMPTY_STRING(zv, is_ref) do { \
763811
zval *_zv = zv; \
764-
if (EXPECTED(Z_ISREF_P(_zv))) { \
812+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
765813
zend_reference *ref = Z_REF_P(_zv); \
766814
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
767815
zend_try_assign_typed_ref_empty_string(ref); \
@@ -773,9 +821,17 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
773821
ZVAL_EMPTY_STRING(_zv); \
774822
} while (0)
775823

776-
#define ZEND_TRY_ASSIGN_STR(zv, str) do { \
824+
#define ZEND_TRY_ASSIGN_EMPTY_STRING(zv) \
825+
_ZEND_TRY_ASSIGN_EMPTY_STRING(zv, 0)
826+
827+
#define ZEND_TRY_ASSIGN_REF_EMPTY_STRING(zv) do { \
828+
ZEND_ASSERT(Z_ISREF_P(zv)); \
829+
_ZEND_TRY_ASSIGN_EMPTY_STRING(zv, 1); \
830+
} while (0)
831+
832+
#define _ZEND_TRY_ASSIGN_STR(zv, str, is_ref) do { \
777833
zval *_zv = zv; \
778-
if (EXPECTED(Z_ISREF_P(_zv))) { \
834+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
779835
zend_reference *ref = Z_REF_P(_zv); \
780836
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
781837
zend_try_assign_typed_ref_str(ref, str); \
@@ -787,9 +843,17 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
787843
ZVAL_STR(_zv, str); \
788844
} while (0)
789845

790-
#define ZEND_TRY_ASSIGN_NEW_STR(zv, str) do { \
846+
#define ZEND_TRY_ASSIGN_STR(zv, str) \
847+
_ZEND_TRY_ASSIGN_STR(zv, str, 0)
848+
849+
#define ZEND_TRY_ASSIGN_REF_STR(zv, str) do { \
850+
ZEND_ASSERT(Z_ISREF_P(zv)); \
851+
_ZEND_TRY_ASSIGN_STR(zv, str, 1); \
852+
} while (0)
853+
854+
#define _ZEND_TRY_ASSIGN_NEW_STR(zv, str, is_str) do { \
791855
zval *_zv = zv; \
792-
if (EXPECTED(Z_ISREF_P(_zv))) { \
856+
if (is_str || UNEXPECTED(Z_ISREF_P(_zv))) { \
793857
zend_reference *ref = Z_REF_P(_zv); \
794858
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
795859
zend_try_assign_typed_ref_str(ref, str); \
@@ -801,9 +865,17 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
801865
ZVAL_NEW_STR(_zv, str); \
802866
} while (0)
803867

804-
#define ZEND_TRY_ASSIGN_STRING(zv, string) do { \
868+
#define ZEND_TRY_ASSIGN_NEW_STR(zv, str) \
869+
_ZEND_TRY_ASSIGN_NEW_STR(zv, str, 0)
870+
871+
#define ZEND_TRY_ASSIGN_REF_NEW_STR(zv, str) do { \
872+
ZEND_ASSERT(Z_ISREF_P(zv)); \
873+
_ZEND_TRY_ASSIGN_NEW_STR(zv, str, 1); \
874+
} while (0)
875+
876+
#define _ZEND_TRY_ASSIGN_STRING(zv, string, is_ref) do { \
805877
zval *_zv = zv; \
806-
if (EXPECTED(Z_ISREF_P(_zv))) { \
878+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
807879
zend_reference *ref = Z_REF_P(_zv); \
808880
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
809881
zend_try_assign_typed_ref_string(ref, string); \
@@ -815,9 +887,17 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
815887
ZVAL_STRING(_zv, string); \
816888
} while (0)
817889

818-
#define ZEND_TRY_ASSIGN_STRINGL(zv, string, len) do { \
890+
#define ZEND_TRY_ASSIGN_STRING(zv, string) \
891+
_ZEND_TRY_ASSIGN_STRING(zv, string, 0)
892+
893+
#define ZEND_TRY_ASSIGN_REF_STRING(zv, string) do { \
894+
ZEND_ASSERT(Z_ISREF_P(zv)); \
895+
_ZEND_TRY_ASSIGN_STRING(zv, string, 1); \
896+
} while (0)
897+
898+
#define _ZEND_TRY_ASSIGN_STRINGL(zv, string, len, is_ref) do { \
819899
zval *_zv = zv; \
820-
if (EXPECTED(Z_ISREF_P(_zv))) { \
900+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
821901
zend_reference *ref = Z_REF_P(_zv); \
822902
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
823903
zend_try_assign_typed_ref_stringl(ref, string, len); \
@@ -829,9 +909,17 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
829909
ZVAL_STRINGL(_zv, string, len); \
830910
} while (0)
831911

832-
#define ZEND_TRY_ASSIGN_ARR(zv, arr) do { \
912+
#define ZEND_TRY_ASSIGN_STRINGL(zv, string, len) \
913+
_ZEND_TRY_ASSIGN_STRINGL(zv, string, len, 0)
914+
915+
#define ZEND_TRY_ASSIGN_REF_STRINGL(zv, string, len) do { \
916+
ZEND_ASSERT(Z_ISREF_P(zv)); \
917+
_ZEND_TRY_ASSIGN_STRINGL(zv, string, len, 1); \
918+
} while (0)
919+
920+
#define _ZEND_TRY_ASSIGN_ARR(zv, arr, is_ref) do { \
833921
zval *_zv = zv; \
834-
if (EXPECTED(Z_ISREF_P(_zv))) { \
922+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
835923
zend_reference *ref = Z_REF_P(_zv); \
836924
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
837925
zend_try_assign_typed_ref_arr(ref, arr); \
@@ -843,9 +931,17 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
843931
ZVAL_ARR(_zv, arr); \
844932
} while (0)
845933

846-
#define ZEND_TRY_ASSIGN_RES(zv, res) do { \
934+
#define ZEND_TRY_ASSIGN_ARR(zv, arr) \
935+
_ZEND_TRY_ASSIGN_ARR(zv, arr, 0)
936+
937+
#define ZEND_TRY_ASSIGN_REF_ARR(zv, arr) do { \
938+
ZEND_ASSERT(Z_ISREF_P(zv)); \
939+
_ZEND_TRY_ASSIGN_ARR(zv, arr, 1); \
940+
} while (0)
941+
942+
#define _ZEND_TRY_ASSIGN_RES(zv, res, is_ref) do { \
847943
zval *_zv = zv; \
848-
if (EXPECTED(Z_ISREF_P(_zv))) { \
944+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
849945
zend_reference *ref = Z_REF_P(_zv); \
850946
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
851947
zend_try_assign_typed_ref_res(ref, res); \
@@ -857,9 +953,17 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
857953
ZVAL_RES(_zv, res); \
858954
} while (0)
859955

860-
#define ZEND_TRY_ASSIGN_TMP(zv, other_zv) do { \
956+
#define ZEND_TRY_ASSIGN_RES(zv, res) \
957+
_ZEND_TRY_ASSIGN_RES(zv, res, 0)
958+
959+
#define ZEND_TRY_ASSIGN_REF_RES(zv, res) do { \
960+
ZEND_ASSERT(Z_ISREF_P(zv)); \
961+
_ZEND_TRY_ASSIGN_RES(zv, res, 1); \
962+
} while (0)
963+
964+
#define _ZEND_TRY_ASSIGN_TMP(zv, other_zv, is_ref) do { \
861965
zval *_zv = zv; \
862-
if (EXPECTED(Z_ISREF_P(_zv))) { \
966+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
863967
zend_reference *ref = Z_REF_P(_zv); \
864968
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
865969
zend_try_assign_typed_ref(ref, other_zv); \
@@ -871,9 +975,17 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
871975
ZVAL_COPY_VALUE(_zv, other_zv); \
872976
} while (0)
873977

874-
#define ZEND_TRY_ASSIGN_VALUE(zv, other_zv) do { \
978+
#define ZEND_TRY_ASSIGN_TMP(zv, other_zv) \
979+
_ZEND_TRY_ASSIGN_TMP(zv, other_zv, 0)
980+
981+
#define ZEND_TRY_ASSIGN_REF_TMP(zv, other_zv) do { \
982+
ZEND_ASSERT(Z_ISREF_P(zv)); \
983+
_ZEND_TRY_ASSIGN_TMP(zv, other_zv, 1); \
984+
} while (0)
985+
986+
#define _ZEND_TRY_ASSIGN_VALUE(zv, other_zv, is_ref) do { \
875987
zval *_zv = zv; \
876-
if (EXPECTED(Z_ISREF_P(_zv))) { \
988+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
877989
zend_reference *ref = Z_REF_P(_zv); \
878990
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
879991
zend_try_assign_typed_ref_zval(ref, other_zv); \
@@ -885,14 +997,27 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
885997
ZVAL_COPY_VALUE(_zv, other_zv); \
886998
} while (0)
887999

1000+
#define ZEND_TRY_ASSIGN_VALUE(zv, other_zv) \
1001+
_ZEND_TRY_ASSIGN_VALUE(zv, other_zv, 0)
1002+
1003+
#define ZEND_TRY_ASSIGN_REF_VALUE(zv, other_zv) do { \
1004+
ZEND_ASSERT(Z_ISREF_P(zv)); \
1005+
_ZEND_TRY_ASSIGN_VALUE(zv, other_zv, 1); \
1006+
} while (0)
1007+
8881008
#define ZEND_TRY_ASSIGN_COPY(zv, other_zv) do { \
8891009
Z_TRY_ADDREF_P(other_zv); \
8901010
ZEND_TRY_ASSIGN_VALUE(zv, other_zv); \
8911011
} while (0)
8921012

893-
#define ZEND_TRY_ASSIGN_VALUE_EX(zv, other_zv, strict) do { \
1013+
#define ZEND_TRY_ASSIGN_REF_COPY(zv, other_zv) do { \
1014+
Z_TRY_ADDREF_P(other_zv); \
1015+
ZEND_TRY_ASSIGN_REF_VALUE(zv, other_zv); \
1016+
} while (0)
1017+
1018+
#define _ZEND_TRY_ASSIGN_VALUE_EX(zv, other_zv, strict, is_ref) do { \
8941019
zval *_zv = zv; \
895-
if (EXPECTED(Z_ISREF_P(_zv))) { \
1020+
if (is_ref || UNEXPECTED(Z_ISREF_P(_zv))) { \
8961021
zend_reference *ref = Z_REF_P(_zv); \
8971022
if (UNEXPECTED(ZEND_REF_HAS_TYPE_SOURCES(ref))) { \
8981023
zend_try_assign_typed_ref_zval_ex(ref, other_zv, strict); \
@@ -904,11 +1029,24 @@ ZEND_API int zend_try_assign_typed_ref_zval_ex(zend_reference *ref, zval *zv, ze
9041029
ZVAL_COPY_VALUE(_zv, other_zv); \
9051030
} while (0)
9061031

1032+
#define ZEND_TRY_ASSIGN_VALUE_EX(zv, other_zv, strict) \
1033+
_ZEND_TRY_ASSIGN_VALUE_EX(zv, other_zv, strict, 0)
1034+
1035+
#define ZEND_TRY_ASSIGN_REF_VALUE_EX(zv, other_zv, strict) do { \
1036+
ZEND_ASSERT(Z_ISREF_P(zv)); \
1037+
_ZEND_TRY_ASSIGN_VALUE_EX(zv, other_zv, strict, 1); \
1038+
} while (0)
1039+
9071040
#define ZEND_TRY_ASSIGN_COPY_EX(zv, other_zv, strict) do { \
9081041
Z_TRY_ADDREF_P(other_zv); \
9091042
ZEND_TRY_ASSIGN_VALUE_EX(zv, other_zv, strict); \
9101043
} while (0)
9111044

1045+
#define ZEND_TRY_ASSIGN_REF_COPY_EX(zv, other_zv, strict) do { \
1046+
Z_TRY_ADDREF_P(other_zv); \
1047+
ZEND_TRY_ASSIGN_REF_VALUE_EX(zv, other_zv, strict); \
1048+
} while (0)
1049+
9121050
/* Initializes a reference to an empty array and returns dereferenced zval,
9131051
* or NULL if the initialization failed. */
9141052
static zend_always_inline zval *zend_try_array_init_size(zval *zv, uint32_t size)

ext/curl/multi.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ PHP_FUNCTION(curl_multi_exec)
290290

291291
still_running = zval_get_long(z_still_running);
292292
error = curl_multi_perform(mh->multi, &still_running);
293-
ZEND_TRY_ASSIGN_LONG(z_still_running, still_running);
293+
ZEND_TRY_ASSIGN_REF_LONG(z_still_running, still_running);
294294

295295
SAVE_CURLM_ERROR(mh, error);
296296
RETURN_LONG((zend_long) error);
@@ -350,7 +350,7 @@ PHP_FUNCTION(curl_multi_info_read)
350350
}
351351

352352
if (zmsgs_in_queue) {
353-
ZEND_TRY_ASSIGN_LONG(zmsgs_in_queue, queued_msgs);
353+
ZEND_TRY_ASSIGN_REF_LONG(zmsgs_in_queue, queued_msgs);
354354
}
355355

356356
array_init(return_value);

ext/exif/exif.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -4622,11 +4622,11 @@ PHP_FUNCTION(exif_thumbnail)
46224622
ImageInfo.Thumbnail.width = ImageInfo.Thumbnail.height = 0;
46234623
}
46244624
}
4625-
ZEND_TRY_ASSIGN_LONG(z_width, ImageInfo.Thumbnail.width);
4626-
ZEND_TRY_ASSIGN_LONG(z_height, ImageInfo.Thumbnail.height);
4625+
ZEND_TRY_ASSIGN_REF_LONG(z_width, ImageInfo.Thumbnail.width);
4626+
ZEND_TRY_ASSIGN_REF_LONG(z_height, ImageInfo.Thumbnail.height);
46274627
}
46284628
if (arg_c >= 4) {
4629-
ZEND_TRY_ASSIGN_LONG(z_imagetype, ImageInfo.Thumbnail.filetype);
4629+
ZEND_TRY_ASSIGN_REF_LONG(z_imagetype, ImageInfo.Thumbnail.filetype);
46304630
}
46314631

46324632
#ifdef EXIF_DEBUG

ext/ftp/php_ftp.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -688,7 +688,7 @@ PHP_FUNCTION(ftp_alloc)
688688
ret = ftp_alloc(ftp, size, zresponse ? &response : NULL);
689689

690690
if (response) {
691-
ZEND_TRY_ASSIGN_STR(zresponse, response);
691+
ZEND_TRY_ASSIGN_REF_STR(zresponse, response);
692692
}
693693

694694
if (!ret) {

0 commit comments

Comments
 (0)