Skip to content

Commit d65aa7a

Browse files
committed
Merge pull request #505
2 parents 521b3af + 737312d commit d65aa7a

File tree

4 files changed

+790
-42
lines changed

4 files changed

+790
-42
lines changed

phongo_compat.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@
9696
# define ADD_ASSOC_ZVAL(_zv, _key, _value) add_assoc_zval(_zv, _key, _value);
9797
# define ADD_ASSOC_NULL_EX(_zv, _key) add_assoc_null_ex(_zv, ZEND_STRL(_key));
9898
# define ADD_ASSOC_BOOL_EX(_zv, _key, _value) add_assoc_bool_ex(_zv, ZEND_STRL(_key), _value);
99-
# define ADD_INDEX_STRINGL(_zv, _ind, _value, _len) add_index_stringl(_zv, _ind, _value, _len);
99+
# define ADD_NEXT_INDEX_STRINGL(_zv, _value, _len) add_next_index_stringl(_zv, _value, _len);
100100
# define phongo_free_object_arg zend_object
101101
# define phongo_zpp_char_len size_t
102102
# define ZEND_HASH_APPLY_COUNT(ht) (ht)->u.v.nApplyCount
@@ -125,7 +125,7 @@
125125
# define ADD_ASSOC_ZVAL(_zv, _key, _value) add_assoc_zval(_zv, _key, _value);
126126
# define ADD_ASSOC_NULL_EX(_zv, _key) add_assoc_null_ex(_zv, ZEND_STRS(_key));
127127
# define ADD_ASSOC_BOOL_EX(_zv, _key, _value) add_assoc_bool_ex(_zv, ZEND_STRS(_key), _value);
128-
# define ADD_INDEX_STRINGL(_zv, _ind, _value, _len) add_index_stringl(_zv, _ind, _value, _len, 0);
128+
# define ADD_NEXT_INDEX_STRINGL(_zv, _value, _len) add_next_index_stringl(_zv, _value, _len, 1);
129129
# define Z_PHPDATE_P(object) ((php_date_obj*)zend_object_store_get_object(object TSRMLS_CC))
130130
# define Z_ISUNDEF(x) !x
131131
# define phongo_free_object_arg void
@@ -143,6 +143,7 @@
143143

144144
#if SIZEOF_PHONGO_LONG == 8
145145
# define ADD_INDEX_INT64(zval, index, value) add_index_long(zval, index, value)
146+
# define ADD_NEXT_INDEX_INT64(zval, value) add_next_index_long(zval, value)
146147
# define ADD_ASSOC_INT64(zval, key, value) add_assoc_long(zval, key, value)
147148
#elif SIZEOF_PHONGO_LONG == 4
148149
# define ADD_INDEX_INT64(zval, index, value) \
@@ -151,6 +152,12 @@
151152
} else { \
152153
add_index_long(zval, index, val); \
153154
}
155+
# define ADD_NEXT_INDEX_INT64(zval, value) \
156+
if (value > INT32_MAX || value < INT32_MIN) { \
157+
phongo_throw_exception(PHONGO_ERROR_INVALID_ARGUMENT TSRMLS_CC, "Integer overflow detected on your platform: %lld", value); \
158+
} else { \
159+
add_next_index_long(zval, val); \
160+
}
154161
# define ADD_ASSOC_INT64(zval, key, value) \
155162
if (value > INT32_MAX || value < INT32_MIN) { \
156163
phongo_throw_exception(PHONGO_ERROR_INVALID_ARGUMENT TSRMLS_CC, "Integer overflow detected on your platform: %lld", value); \

php_bson.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,13 @@ typedef struct {
5555
#endif
5656
php_phongo_bson_typemap map;
5757
zend_class_entry *odm;
58+
bool is_visiting_array;
5859
} php_phongo_bson_state;
5960

6061
#if PHP_VERSION_ID >= 70000
61-
#define PHONGO_BSON_STATE_INITIALIZER { {{ 0 }}, { PHONGO_TYPEMAP_NONE, NULL, PHONGO_TYPEMAP_NONE, NULL, PHONGO_TYPEMAP_NONE, NULL}, NULL}
62+
#define PHONGO_BSON_STATE_INITIALIZER { {{ 0 }}, { PHONGO_TYPEMAP_NONE, NULL, PHONGO_TYPEMAP_NONE, NULL, PHONGO_TYPEMAP_NONE, NULL}, NULL, 0 }
6263
#else
63-
#define PHONGO_BSON_STATE_INITIALIZER { NULL, { PHONGO_TYPEMAP_NONE, NULL, PHONGO_TYPEMAP_NONE, NULL, PHONGO_TYPEMAP_NONE, NULL}, NULL}
64+
#define PHONGO_BSON_STATE_INITIALIZER { NULL, { PHONGO_TYPEMAP_NONE, NULL, PHONGO_TYPEMAP_NONE, NULL, PHONGO_TYPEMAP_NONE, NULL}, NULL, 0 }
6465
#endif
6566

6667
void phongo_zval_to_bson(zval *data, php_phongo_bson_flags_t flags, bson_t *bson, bson_t **bson_out TSRMLS_DC);

0 commit comments

Comments
 (0)