Skip to content

Commit 1e6daee

Browse files
committed
Merge pull request #1096
2 parents 7138487 + 58011a5 commit 1e6daee

File tree

84 files changed

+1868
-5165
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+1868
-5165
lines changed

.evergreen/config.yml

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -621,23 +621,7 @@ axes:
621621
display_name: "PHP 7.0"
622622
variables:
623623
PHP_VERSION: "7.0.32"
624-
- id: "5.6"
625-
display_name: "PHP 5.6"
626-
variables:
627-
PHP_VERSION: "5.6.38"
628624

629-
- id: os-php5
630-
display_name: OS
631-
values:
632-
- id: ubuntu1604-test
633-
display_name: "Ubuntu 16.04"
634-
run_on: ubuntu1604-test
635-
- id: rhel70-test
636-
display_name: "RHEL 7.0"
637-
run_on: rhel70
638-
- id: rhel71-power8
639-
display_name: "RHEL 7.1 Power 8"
640-
run_on: rhel71-power8-test
641625
- id: os-php7
642626
display_name: OS
643627
values:
@@ -693,13 +677,6 @@ axes:
693677

694678
buildvariants:
695679

696-
- matrix_name: "tests-php5"
697-
matrix_spec: {"os-php5": "*", "versions": "4.2", "php-versions": ["5.6"] }
698-
display_name: "All: ${versions}/${php-versions} — ${os-php5}"
699-
tasks:
700-
- name: "test-standalone-ssl"
701-
- name: "test-replicaset-auth"
702-
703680
- matrix_name: "tests-php7"
704681
matrix_spec: {"os-php7": "*", "versions": "4.2", "php-versions": ["7.0","7.1","7.2","7.3"] }
705682
exclude_spec:
@@ -710,14 +687,6 @@ buildvariants:
710687
- name: "test-replicaset-auth"
711688

712689

713-
- matrix_name: "mongo-30-php5"
714-
matrix_spec: {"os-php5": "*", "versions": ["3.0", "3.2", "3.4"], "php-versions": "5.6" }
715-
exclude_spec: {"os-php5": "rhel71-power8", "versions": "3.0", "php-versions": "5.6"}
716-
display_name: "${versions}/${php-versions} — ${os-php5}"
717-
tasks:
718-
- name: "test-standalone-old"
719-
- name: "test-replicaset-old"
720-
721690
- matrix_name: "mongo-30-php7"
722691
matrix_spec: {"os-php7": "*", "versions": ["3.0", "3.2", "3.4"], "php-versions": "7.3" }
723692
exclude_spec:
@@ -730,14 +699,6 @@ buildvariants:
730699
- name: "test-replicaset-old"
731700

732701

733-
- matrix_name: "mongo-36-php5"
734-
matrix_spec: {"os-php5": "*", "versions": ["3.6"], "php-versions": "5.6" }
735-
display_name: "${versions}/${php-versions} — ${os-php5}"
736-
tasks:
737-
- name: "test-standalone"
738-
- name: "test-replicaset"
739-
- name: "test-replicaset-auth"
740-
741702
- matrix_name: "mongo-36-php7"
742703
matrix_spec: {"os-php7": "*", "versions": ["3.6"], "php-versions": "7.3" }
743704
exclude_spec:
@@ -749,19 +710,6 @@ buildvariants:
749710
- name: "test-replicaset-auth"
750711

751712

752-
- matrix_name: "mongo-40-php5"
753-
matrix_spec: {"os-php5": "*", "versions": ["4.0", "4.2", "latest"], "php-versions": "5.6" }
754-
display_name: "${versions}/${php-versions} — ${os-php5}"
755-
tasks:
756-
- name: "test-standalone"
757-
- name: "test-standalone-auth"
758-
- name: "test-standalone-ssl"
759-
- name: "test-replicaset"
760-
- name: "test-replicaset-auth"
761-
- name: "test-replicaset-single"
762-
- name: "test-sharded"
763-
- name: "test-sharded-rs"
764-
765713
- matrix_name: "mongo-40-php7"
766714
matrix_spec: {"os-php7": "*", "versions": ["4.0", "4.2", "latest"], "php-versions": "7.3" }
767715
exclude_spec:

.travis.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ jobs:
2222
php: 7.3
2323

2424
# Test remaining PHP versions
25-
- stage: Test
26-
php: 5.6
2725
- stage: Test
2826
php: 7.0
2927
- stage: Test

bin/package.xml.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ necessary to build a fully-functional MongoDB driver.
5858
<dependencies>
5959
<required>
6060
<php>
61-
<min>5.6.0</min>
61+
<min>7.0.0</min>
6262
<max>7.99.99</max>
6363
</php>
6464
<pearinstaller>

config.m4

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ if test "$PHP_MONGODB" != "no"; then
2020
fi
2121

2222
AC_MSG_RESULT($PHP_MONGODB_PHP_VERSION)
23-
if test "$PHP_MONGODB_PHP_VERSION_ID" -lt "50600"; then
24-
AC_MSG_ERROR([not supported. Need a PHP version >= 5.6.0 (found $PHP_MONGODB_PHP_VERSION)])
23+
if test "$PHP_MONGODB_PHP_VERSION_ID" -lt "70000"; then
24+
AC_MSG_ERROR([not supported. Need a PHP version >= 7.0.0 (found $PHP_MONGODB_PHP_VERSION)])
2525
fi
2626

2727
PHP_ARG_ENABLE([mongodb-developer-flags],

phongo_compat.c

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,12 @@
1717
/* Our Compatability header */
1818
#include "phongo_compat.h"
1919

20-
void phongo_add_exception_prop(const char* prop, int prop_len, zval* value TSRMLS_DC)
20+
void phongo_add_exception_prop(const char* prop, int prop_len, zval* value)
2121
{
2222
if (EG(exception)) {
23-
#if PHP_VERSION_ID >= 70000
2423
zval ex;
25-
EXCEPTION_P(EG(exception), ex);
24+
ZVAL_OBJ(&ex, EG(exception));
2625
zend_update_property(Z_OBJCE(ex), &ex, prop, prop_len, value);
27-
#else
28-
zval* ex = NULL;
29-
EXCEPTION_P(EG(exception), ex);
30-
zend_update_property(Z_OBJCE_P(ex), ex, prop, prop_len, value TSRMLS_CC);
31-
#endif
3226
}
3327
}
3428

phongo_compat.h

Lines changed: 32 additions & 161 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@
1919

2020
#include <php.h>
2121
#include <Zend/zend_string.h>
22-
#if PHP_VERSION_ID >= 70000
2322
#include <Zend/zend_portability.h>
24-
#endif
2523

2624
#ifdef PHP_WIN32
2725
#include "config.w32.h"
@@ -40,12 +38,6 @@
4038
#define HASH_KEY_NON_EXISTENT HASH_KEY_NON_EXISTANT
4139
#endif
4240

43-
#if PHP_VERSION_ID >= 70000
44-
#define str_efree(s) efree((char*) s)
45-
#else
46-
#include <Zend/zend_string.h>
47-
#endif
48-
4941
#if defined(__GNUC__)
5042
#define ARG_UNUSED __attribute__((unused))
5143
#else
@@ -66,23 +58,14 @@
6658
#define PHONGO_BREAK_INTENTIONALLY_MISSING
6759
#endif
6860

69-
#if PHP_VERSION_ID >= 70000
70-
#define phongo_char zend_string
71-
#define phongo_long zend_long
7261
#if SIZEOF_ZEND_LONG == 8
7362
#define PHONGO_LONG_FORMAT PRId64
7463
#elif SIZEOF_ZEND_LONG == 4
7564
#define PHONGO_LONG_FORMAT PRId32
7665
#else
7766
#error Unsupported architecture (integers are neither 32-bit nor 64-bit)
7867
#endif
79-
#define SIZEOF_PHONGO_LONG SIZEOF_ZEND_LONG
80-
#define phongo_create_object_retval zend_object*
81-
#define phongo_get_gc_table zval**
8268
#define PHONGO_ALLOC_OBJECT_T(_obj_t, _class_type) (_obj_t*) ecalloc(1, sizeof(_obj_t) + zend_object_properties_size(_class_type))
83-
#define PHONGO_TSRMLS_FETCH_FROM_CTX(user_data)
84-
#define DECLARE_RETURN_VALUE_USED int return_value_used = 1;
85-
#define EXCEPTION_P(_ex, _zp) ZVAL_OBJ(&_zp, _ex)
8669
#define ADD_ASSOC_STRING(_zv, _key, _value) add_assoc_string_ex(_zv, ZEND_STRL(_key), (char*) (_value));
8770
#define ADD_ASSOC_STRINGL(_zv, _key, _value, _len) add_assoc_stringl_ex(_zv, ZEND_STRL(_key), (char*) (_value), _len);
8871
#define ADD_ASSOC_STRING_EX(_zv, _key, _key_len, _value, _value_len) add_assoc_stringl_ex(_zv, _key, _key_len, (char*) (_value), _value_len);
@@ -105,167 +88,55 @@
10588
ADD_ASSOC_ZVAL_EX((_zv), (_key), &z_int); \
10689
} while (0)
10790
#define ADD_NEXT_INDEX_STRINGL(_zv, _value, _len) add_next_index_stringl(_zv, _value, _len);
108-
#define phongo_free_object_arg zend_object
109-
#define phongo_zpp_char_len size_t
110-
#define ZEND_HASH_APPLY_COUNT(ht) (ht)->u.v.nApplyCount
111-
#define PHONGO_RETVAL_STRINGL(s, slen) RETVAL_STRINGL(s, slen)
112-
#define PHONGO_RETURN_STRINGL(s, slen) RETURN_STRINGL(s, slen)
113-
#define PHONGO_RETVAL_STRING(s) RETVAL_STRING(s)
114-
#define PHONGO_RETURN_STRING(s) RETURN_STRING(s)
115-
#define PHONGO_RETVAL_SMART_STR(val) PHONGO_RETVAL_STRINGL(ZSTR_VAL((val).s), ZSTR_LEN((val).s));
116-
#define ZVAL_RETVAL_TYPE zval
91+
#define PHONGO_RETVAL_SMART_STR(val) RETVAL_STRINGL(ZSTR_VAL((val).s), ZSTR_LEN((val).s));
11792
#define ZVAL_STATIC_INIT \
11893
{ \
11994
{ \
12095
0 \
12196
} \
12297
}
123-
#else /* PHP_VERSION_ID < 70000 */
124-
#define phongo_char char
125-
#define phongo_long long
126-
#define PHONGO_LONG_FORMAT "ld"
127-
#define SIZEOF_PHONGO_LONG SIZEOF_LONG
128-
#define ZSTR_VAL(str) str
129-
#define phongo_create_object_retval zend_object_value
130-
#define phongo_get_gc_table zval***
131-
#define PHONGO_ALLOC_OBJECT_T(_obj_t, _class_type) (_obj_t*) ecalloc(1, sizeof(_obj_t))
132-
#define PHONGO_TSRMLS_FETCH_FROM_CTX(user_data) TSRMLS_FETCH_FROM_CTX(user_data)
133-
#define DECLARE_RETURN_VALUE_USED
134-
#define EXCEPTION_P(_ex, _zp) _zp = _ex
135-
#define ADD_ASSOC_STRING(_zv, _key, _value) add_assoc_string_ex(_zv, ZEND_STRS(_key), (char*) (_value), 1);
136-
#define ADD_ASSOC_STRINGL(_zv, _key, _value, _len) add_assoc_stringl_ex(_zv, ZEND_STRS(_key), (char*) (_value), _len, 1);
137-
#define ADD_ASSOC_STRING_EX(_zv, _key, _key_len, _value, _value_len) add_assoc_stringl_ex(_zv, _key, _key_len + 1, (char*) (_value), _value_len, 1);
138-
#define ADD_ASSOC_LONG_EX(_zv, _key, _value) add_assoc_long_ex(_zv, ZEND_STRS(_key), _value);
139-
#define ADD_ASSOC_ZVAL_EX(_zv, _key, _value) add_assoc_zval_ex(_zv, ZEND_STRS(_key), _value);
140-
#define ADD_ASSOC_ZVAL(_zv, _key, _value) add_assoc_zval(_zv, _key, _value);
141-
#define ADD_ASSOC_NULL_EX(_zv, _key) add_assoc_null_ex(_zv, ZEND_STRS(_key));
142-
#define ADD_ASSOC_BOOL_EX(_zv, _key, _value) add_assoc_bool_ex(_zv, ZEND_STRS(_key), _value);
143-
#define ZVAL_INT64_STRING(_zv, _value) \
144-
do { \
145-
char tmp[24]; \
146-
int tmp_len; \
147-
tmp_len = snprintf(tmp, sizeof(tmp), "%" PRId64, (_value)); \
148-
ZVAL_STRINGL((_zv), tmp, tmp_len, 1); \
149-
} while (0)
15098

151-
#define ADD_ASSOC_INT64_AS_STRING(_zv, _key, _value) \
152-
do { \
153-
zval* z_int; \
154-
MAKE_STD_ZVAL(z_int); \
155-
ZVAL_INT64_STRING(z_int, (_value)); \
156-
ADD_ASSOC_ZVAL_EX((_zv), (_key), z_int); \
157-
} while (0)
158-
#define ADD_NEXT_INDEX_STRINGL(_zv, _value, _len) add_next_index_stringl(_zv, _value, _len, 1);
159-
#define Z_PHPDATE_P(object) ((php_date_obj*) zend_object_store_get_object(object TSRMLS_CC))
160-
#define Z_ISUNDEF(x) !x
161-
#define ZVAL_UNDEF(x) \
162-
do { \
163-
(*x) = NULL; \
164-
} while (0)
165-
#define ZVAL_ARR(z, a) \
166-
do { \
167-
HashTable* __arr = (a); \
168-
zval* __z = (z); \
169-
Z_ARRVAL_P(__z) = __arr; \
170-
Z_TYPE_P(__z) = IS_ARRAY; \
171-
} while (0);
172-
#define ZVAL_DUP(z, v) \
173-
do { \
174-
zval* _z = (z); \
175-
const zval* _v = (v); \
176-
*_z = *_v; \
177-
INIT_PZVAL(_z); \
178-
zval_copy_ctor(_z); \
179-
} while (0);
180-
#define phongo_free_object_arg void
181-
#define phongo_zpp_char_len int
182-
#define ZEND_HASH_APPLY_PROTECTION(ht) 1
183-
#define ZEND_HASH_GET_APPLY_COUNT(ht) ((ht)->nApplyCount)
184-
#define ZEND_HASH_DEC_APPLY_COUNT(ht) ((ht)->nApplyCount -= 1)
185-
#define ZEND_HASH_INC_APPLY_COUNT(ht) ((ht)->nApplyCount += 1)
186-
#define PHONGO_RETVAL_STRINGL(s, slen) RETVAL_STRINGL(s, slen, 1)
187-
#define PHONGO_RETURN_STRINGL(s, slen) RETURN_STRINGL(s, slen, 1)
188-
#define PHONGO_RETVAL_STRING(s) RETVAL_STRING(s, 1)
189-
#define PHONGO_RETURN_STRING(s) RETURN_STRING(s, 1)
190-
#define PHONGO_RETVAL_SMART_STR(val) PHONGO_RETVAL_STRINGL((val).c, (val).len);
191-
#define ZVAL_RETVAL_TYPE zval*
192-
#define ZVAL_STATIC_INIT zval_used_for_init
193-
#endif
194-
195-
#if SIZEOF_PHONGO_LONG == 8
99+
#if SIZEOF_ZEND_LONG == 8
196100
#define ADD_INDEX_INT64(_zv, _index, _value) add_index_long((_zv), (_index), (_value))
197101
#define ADD_NEXT_INDEX_INT64(_zv, _value) add_next_index_long((_zv), (_value))
198102
#define ADD_ASSOC_INT64(_zv, _key, _value) add_assoc_long((_zv), (_key), (_value))
199103
#define ZVAL_INT64(_zv, _value) ZVAL_LONG((_zv), (_value))
200-
#elif SIZEOF_PHONGO_LONG == 4
201-
#if PHP_VERSION_ID >= 70000
202-
#define ADD_INDEX_INT64(_zv, _index, _value) \
203-
if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \
204-
zval zchild; \
205-
php_phongo_bson_new_int64(&zchild, (_value) TSRMLS_CC); \
206-
add_index_zval((_zv), (_index), &zchild); \
207-
} else { \
208-
add_index_long((_zv), (_index), (_value)); \
209-
}
210-
#define ADD_NEXT_INDEX_INT64(_zv, _value) \
211-
if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \
212-
zval zchild; \
213-
php_phongo_bson_new_int64(&zchild, (_value) TSRMLS_CC); \
214-
add_next_index_zval((_zv), &zchild); \
215-
} else { \
216-
add_next_index_long((_zv), (_value)); \
217-
}
218-
#define ADD_ASSOC_INT64(_zv, _key, _value) \
219-
if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \
220-
zval zchild; \
221-
php_phongo_bson_new_int64(&zchild, (_value) TSRMLS_CC); \
222-
add_assoc_zval((_zv), (_key), &zchild); \
223-
} else { \
224-
add_assoc_long((_zv), (_key), (_value)); \
225-
}
226-
#else /* PHP_VERSION_ID < 70000 */
227-
#define ADD_INDEX_INT64(_zv, _index, _value) \
228-
if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \
229-
zval* zchild = NULL; \
230-
TSRMLS_FETCH(); \
231-
MAKE_STD_ZVAL(zchild); \
232-
php_phongo_bson_new_int64(zchild, (_value) TSRMLS_CC); \
233-
add_index_zval((_zv), (_index), zchild); \
234-
} else { \
235-
add_index_long((_zv), (_index), (_value)); \
104+
#elif SIZEOF_ZEND_LONG == 4
105+
#define ADD_INDEX_INT64(_zv, _index, _value) \
106+
if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \
107+
zval zchild; \
108+
php_phongo_bson_new_int64(&zchild, (_value)); \
109+
add_index_zval((_zv), (_index), &zchild); \
110+
} else { \
111+
add_index_long((_zv), (_index), (_value)); \
236112
}
237-
#define ADD_NEXT_INDEX_INT64(_zv, _value) \
238-
if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \
239-
zval* zchild = NULL; \
240-
TSRMLS_FETCH(); \
241-
MAKE_STD_ZVAL(zchild); \
242-
php_phongo_bson_new_int64(zchild, (_value) TSRMLS_CC); \
243-
add_next_index_zval((_zv), zchild); \
244-
} else { \
245-
add_next_index_long((_zv), (_value)); \
113+
#define ADD_NEXT_INDEX_INT64(_zv, _value) \
114+
if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \
115+
zval zchild; \
116+
php_phongo_bson_new_int64(&zchild, (_value)); \
117+
add_next_index_zval((_zv), &zchild); \
118+
} else { \
119+
add_next_index_long((_zv), (_value)); \
246120
}
247-
#define ADD_ASSOC_INT64(_zv, _key, _value) \
248-
if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \
249-
zval* zchild = NULL; \
250-
TSRMLS_FETCH(); \
251-
MAKE_STD_ZVAL(zchild); \
252-
php_phongo_bson_new_int64(zchild, (_value) TSRMLS_CC); \
253-
add_assoc_zval((_zv), (_key), zchild); \
254-
} else { \
255-
add_assoc_long((_zv), (_key), (_value)); \
121+
#define ADD_ASSOC_INT64(_zv, _key, _value) \
122+
if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \
123+
zval zchild; \
124+
php_phongo_bson_new_int64(&zchild, (_value)); \
125+
add_assoc_zval((_zv), (_key), &zchild); \
126+
} else { \
127+
add_assoc_long((_zv), (_key), (_value)); \
256128
}
257-
#endif /* PHP_VERSION_ID */
258-
#define ZVAL_INT64(_zv, _value) \
259-
if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \
260-
php_phongo_bson_new_int64((_zv), (_value) TSRMLS_CC); \
261-
} else { \
262-
ZVAL_LONG((_zv), (_value)); \
129+
#define ZVAL_INT64(_zv, _value) \
130+
if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \
131+
php_phongo_bson_new_int64((_zv), (_value)); \
132+
} else { \
133+
ZVAL_LONG((_zv), (_value)); \
263134
}
264-
#else /* SIZEOF_PHONGO_LONG != 8 && SIZEOF_PHONGO_LONG != 4 */
135+
#else /* SIZEOF_ZEND_LONG != 8 && SIZEOF_ZEND_LONG != 4 */
265136
#error Unsupported architecture (integers are neither 32-bit nor 64-bit)
266-
#endif /* SIZEOF_PHONGO_LONG */
137+
#endif /* SIZEOF_ZEND_LONG */
267138

268-
void phongo_add_exception_prop(const char* prop, int prop_len, zval* value TSRMLS_DC);
139+
void phongo_add_exception_prop(const char* prop, int prop_len, zval* value);
269140
zend_bool php_phongo_zend_hash_apply_protection_begin(HashTable* ht);
270141
zend_bool php_phongo_zend_hash_apply_protection_end(HashTable* ht);
271142

0 commit comments

Comments
 (0)