@@ -120,7 +120,7 @@ PHP_METHOD(arraylist, __construct)
120
120
121
121
static void arraylist_resize (arraylist * array ) /* {{{ */
122
122
{
123
- if (array -> nNextIndex = = array -> nSize )
123
+ if (array -> nNextIndex > = array -> nSize )
124
124
{
125
125
size_t i = 0 ;
126
126
size_t oldSize = array -> nSize == 1 ? 2 : array -> nSize ;
@@ -134,7 +134,6 @@ static void arraylist_resize(arraylist *array) /* {{{ */
134
134
efree (array -> elements );
135
135
array -> elements = NULL ;
136
136
array -> elements = elements ;
137
- // Z_TRY_ADDREF(elements);
138
137
array -> nSize = newSize ;
139
138
}
140
139
}
@@ -184,11 +183,12 @@ PHP_METHOD(arraylist, add)
184
183
ZEND_PARSE_PARAMETERS_END ();
185
184
186
185
intern = Z_ARRAYLIST_P (object );
186
+ arraylist_resize (& intern -> array );
187
187
if (intern -> array .nSize > 0 && intern -> array .nNextIndex < intern -> array .nSize ) {
188
188
ZVAL_LONG (& offset , intern -> array .nNextIndex );
189
189
arraylist_object_write_dimension_helper (intern , & offset , val );
190
190
intern -> array .nNextIndex ++ ;
191
- // intern->array.nNumUsed++;
191
+ intern -> array .nNumUsed ++ ;
192
192
RETURN_TRUE ;
193
193
} else {
194
194
RETURN_FALSE ;
@@ -264,6 +264,7 @@ PHP_METHOD(arraylist, getSize)
264
264
if (zend_parse_parameters_none () == FAILURE ) {
265
265
return ;
266
266
}
267
+ intern = Z_ARRAYLIST_P (object );
267
268
RETURN_LONG (intern -> array .nSize );
268
269
}
269
270
@@ -446,7 +447,7 @@ PHP_MINIT_FUNCTION(arraylist) /* {{{ */ {
446
447
sizeof (PHP_ARRAYLIST_VERSION )- 1 ,
447
448
CONST_CS |CONST_PERSISTENT
448
449
);
449
-
450
+
450
451
INIT_CLASS_ENTRY (ce , "ArrayList" , arraylist_methods ); //注册类及类方法
451
452
array_list_ce = zend_register_internal_class (& ce );
452
453
array_list_ce -> create_object = arraylist_new ;
0 commit comments