[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pecl-cvs
Subject:    [PECL-CVS] cvs: pecl /mongo collection.c db.c gridfs.c mongo.c mongo.h mongo_types.c package.xml uti
From:       "Kristina Chodorow" <kristina () php ! net>
Date:       2009-05-20 20:23:33
Message-ID: cvskristina1242851013 () cvsserver
[Download RAW message or body]

kristina		Wed May 20 20:23:33 2009 UTC

  Modified files:              
    /pecl/mongo	collection.c db.c gridfs.c mongo.c mongo.h 
               	mongo_types.c package.xml util.c 
  Log:
  PHP 5.3 compatibility
  
  
["kristina-20090520202333.txt" (text/plain)]

http://cvs.php.net/viewvc.cgi/pecl/mongo/collection.c?r1=1.1&r2=1.2&diff_format=u
Index: pecl/mongo/collection.c
diff -u pecl/mongo/collection.c:1.1 pecl/mongo/collection.c:1.2
--- pecl/mongo/collection.c:1.1	Tue May 19 14:06:54 2009
+++ pecl/mongo/collection.c	Wed May 20 20:23:33 2009
@@ -88,12 +88,11 @@
   array_init(data);
   add_assoc_string(data, "drop", Z_STRVAL_P(name), 1);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, data, db, 3, NULL);
-
+  PUSH_PARAM(zlink); PUSH_PARAM(data); PUSH_PARAM(db); PUSH_PARAM((void*)3);
+  PUSH_EO_PARAM();
   zim_MongoUtil_dbCommand(3, return_value, return_value_ptr, NULL, return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&data);
 }
@@ -121,11 +120,11 @@
   zval *db = zend_read_property(mongo_ce_Collection, getThis(), "db", strlen("db"), \
NOISY TSRMLS_CC);  db = zend_read_property(mongo_ce_DB, db, "name", strlen("name"), \
NOISY TSRMLS_CC);  
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, data, db, 3, NULL);
+  PUSH_PARAM(zlink); PUSH_PARAM(data); PUSH_PARAM(db); PUSH_PARAM((void*)3);
+  PUSH_EO_PARAM();
   zim_MongoUtil_dbCommand(3, return_value, return_value_ptr, NULL, return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&data);
 }
@@ -194,7 +193,6 @@
 }
 
 PHP_METHOD(MongoCollection, find) {
-  void *holder;
   zval *query = 0, *fields = 0;
   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|aa", &query, &fields) == \
FAILURE) {  return;
@@ -205,21 +203,25 @@
 
   object_init_ex(return_value, mongo_ce_Cursor);
 
-  zend_ptr_stack_2_push(&EG(argument_stack), connection, ns);
-
+  PUSH_PARAM(connection); PUSH_PARAM(ns); 
   if (query) {
-    zend_ptr_stack_push(&EG(argument_stack), query);
+    PUSH_PARAM(query);
     if (fields) {
-      zend_ptr_stack_push(&EG(argument_stack), fields);
+      PUSH_PARAM(fields);
     }
   }
   
-  zend_ptr_stack_2_push(&EG(argument_stack), (void*)ZEND_NUM_ARGS()+2, NULL);
-  
+  PUSH_PARAM((void*)(ZEND_NUM_ARGS()+2));
+  PUSH_EO_PARAM();
+
   zval temp;
   zim_MongoCursor___construct(ZEND_NUM_ARGS()+2, &temp, NULL, return_value, \
return_value_used TSRMLS_CC);  
-  zend_ptr_stack_n_pop(&EG(argument_stack), ZEND_NUM_ARGS()+4, &holder, &holder, \
&holder, &holder, &holder, &holder); +  POP_EO_PARAM();
+  int i = 0;
+  while(i++ < ZEND_NUM_ARGS()+3) {
+    POP_PARAM();
+  }
 }
 
 PHP_METHOD(MongoCollection, findOne) {
@@ -232,22 +234,27 @@
   MAKE_STD_ZVAL(cursor);
 
   if (query) {
-    zend_ptr_stack_n_push(&EG(argument_stack), 3, query, 1, NULL);
+    PUSH_PARAM(query);
+    PUSH_PARAM((void*)1);
+    PUSH_EO_PARAM();
   }
   zim_MongoCollection_find(ZEND_NUM_ARGS(), cursor, &cursor, getThis(), \
return_value_used TSRMLS_CC);  
-  void *holder;
   if (query) {
-    zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+    POP_EO_PARAM();
+    POP_PARAM();
+    POP_PARAM();
   }
 
   zval limit;
   limit.type = IS_LONG;
   limit.value.lval = 1;
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, &limit, 1, NULL);
+  PUSH_PARAM(&limit); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCursor_limit(1, cursor, &cursor, cursor, return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zim_MongoCursor_getNext(0, return_value, return_value_ptr, cursor, \
return_value_used TSRMLS_CC);  
@@ -345,10 +352,11 @@
   zval *collection;
   MAKE_STD_ZVAL(collection);
 
-  void *holder;
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, system_indexes, 1, NULL);
+  PUSH_PARAM(system_indexes); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoDB_selectCollection(1, collection, &collection, db, return_value_used \
                TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   // set up data
   zval *data;
@@ -366,17 +374,21 @@
   MAKE_STD_ZVAL(key_str);
 
   // MongoUtil::toIndexString()
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, keys, 1, NULL);
+  PUSH_PARAM(keys); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoUtil_toIndexString(1, key_str, &key_str, NULL, return_value_used \
                TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   add_assoc_zval(data, "name", key_str);
   add_assoc_bool(data, "unique", unique);
 
   // MongoCollection::insert()
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, data, 1, NULL);
+  PUSH_PARAM(data); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCollection_insert(1, return_value, return_value_ptr, collection, \
                return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&data); 
   zval_ptr_dtor(&system_indexes);
@@ -389,14 +401,14 @@
   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &keys) == FAILURE) {
     return;
   }
-
-  void *holder;
   zval *key_str;
   MAKE_STD_ZVAL(key_str);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, keys, 1, NULL);
+  PUSH_PARAM(keys); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoUtil_toIndexString(1, key_str, &key_str, NULL, return_value_used \
                TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zval *name = zend_read_property(mongo_ce_Collection, getThis(), "name", \
strlen("name"), NOISY TSRMLS_CC);  zval *db = zend_read_property(mongo_ce_Collection, \
getThis(), "db", strlen("db"), NOISY TSRMLS_CC); @@ -410,10 +422,12 @@
   add_assoc_zval(data, "deleteIndexes", name);
   zval_add_ref(&key_str);
   add_assoc_zval(data, "index", key_str);
-
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, connection, data, db_name, 3, NULL);
+ 
+  PUSH_PARAM(connection); PUSH_PARAM(data); PUSH_PARAM(db_name); \
PUSH_PARAM((void*)3); +  PUSH_EO_PARAM();
   zim_MongoUtil_dbCommand(3, return_value, return_value_ptr, NULL, return_value_used \
                TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&data);
   zval_ptr_dtor(&key_str);
@@ -434,12 +448,11 @@
   zval *db = zend_read_property(mongo_ce_Collection, getThis(), "db", strlen("db"), \
0 TSRMLS_CC);  db = zend_read_property(mongo_ce_Collection, db, "name", \
strlen("name"), 0 TSRMLS_CC);  
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, data, db, 3, NULL);
-
+  PUSH_PARAM(zlink); PUSH_PARAM(data); PUSH_PARAM(db); PUSH_PARAM((void*)3);
+  PUSH_EO_PARAM();
   zim_MongoUtil_dbCommand(3, return_value, return_value_ptr, NULL, return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&data);
 }
@@ -455,10 +468,11 @@
   MAKE_STD_ZVAL(i_str);
   ZVAL_STRING(i_str, "system.indexes", 1);
 
-  void *holder;
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, i_str, 1, NULL);
+  PUSH_PARAM(i_str); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoDB_selectCollection(1, collection, &collection, db, return_value_used \
                TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zval *query;
   MAKE_STD_ZVAL(query);
@@ -468,9 +482,12 @@
 
   zval *cursor;
   MAKE_STD_ZVAL(cursor);
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, query, 1, NULL);
+
+  PUSH_PARAM(query); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCollection_find(1, cursor, &cursor, collection, return_value_used \
                TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   array_init(return_value);
 
@@ -502,15 +519,17 @@
   zval *response;
   MAKE_STD_ZVAL(response);
 
-  void *holder;
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, data, db_name, 3, NULL);
+  PUSH_PARAM(zlink); PUSH_PARAM(data); PUSH_PARAM(db_name); PUSH_PARAM((void*)3);
+  PUSH_EO_PARAM();
   zim_MongoUtil_dbCommand(3, response, &response, NULL, return_value_used \
                TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&data);
   zval **n;
   if (zend_hash_find(Z_ARRVAL_P(response), "n", 2, (void**)&n) == SUCCESS) {
-    RETURN_ZVAL(*n, 1, 1);
+    RETVAL_ZVAL(*n, 1, 0);
+    zval_ptr_dtor(&response);
   }
   else {
     RETURN_ZVAL(response, 0, 1);
@@ -523,7 +542,6 @@
     return;
   }
 
-  zval *holder;
   zval **id;
   if (zend_hash_find(Z_ARRVAL_P(a), "_id", 4, (void**)&id) == SUCCESS) {
     zval *criteria;
@@ -535,16 +553,20 @@
     Z_TYPE(zupsert) = IS_BOOL;
     zupsert.value.lval = 1;
 
-    zend_ptr_stack_n_push(&EG(argument_stack), 5, criteria, a, &zupsert, 3, NULL);
+    PUSH_PARAM(criteria); PUSH_PARAM(a); PUSH_PARAM(&zupsert); PUSH_PARAM((void*)3);
+    PUSH_EO_PARAM();
     zim_MongoCollection_update(3, return_value, return_value_ptr, getThis(), \
return_value_used TSRMLS_CC); +    POP_EO_PARAM();
+    POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
-    zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder);  return;
   }
   
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, a, 1, NULL);
+  PUSH_PARAM(a); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCollection_insert(1, return_value, return_value_ptr, getThis(), \
                return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); 
 }
 
 PHP_METHOD(MongoCollection, createDBRef) {
@@ -556,10 +578,11 @@
   zval *db = zend_read_property(mongo_ce_Collection, getThis(), "db", strlen("db"), \
NOISY TSRMLS_CC);  zval *name = zend_read_property(mongo_ce_Collection, getThis(), \
"name", strlen("name"), NOISY TSRMLS_CC);  
-  void *holder;
-  zend_ptr_stack_n_push(&EG(argument_stack), 4, name, obj, 2, NULL);
+  PUSH_PARAM(name); PUSH_PARAM(obj); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
   zim_MongoDB_createDBRef(2, return_value, return_value_ptr, db, return_value_used \
                TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); 
 }
 
 PHP_METHOD(MongoCollection, getDBRef) {
@@ -570,10 +593,11 @@
 
   zval *db = zend_read_property(mongo_ce_Collection, getThis(), "db", strlen("db"), \
NOISY TSRMLS_CC);  
-  void *holder;
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, ref, 1, NULL);
+  PUSH_PARAM(ref); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoDB_getDBRef(1, return_value, return_value_ptr, db, return_value_used \
                TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); 
 }
 
 static function_entry MongoCollection_methods[] = {
http://cvs.php.net/viewvc.cgi/pecl/mongo/db.c?r1=1.1&r2=1.2&diff_format=u
Index: pecl/mongo/db.c
diff -u pecl/mongo/db.c:1.1 pecl/mongo/db.c:1.2
--- pecl/mongo/db.c:1.1	Tue May 19 14:06:54 2009
+++ pecl/mongo/db.c	Wed May 20 20:23:33 2009
@@ -73,11 +73,12 @@
   MAKE_STD_ZVAL(obj);
   object_init_ex(obj, mongo_ce_Collection);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 4, getThis(), collection, 2, NULL);
+  PUSH_PARAM(getThis()); PUSH_PARAM(collection); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
   zim_MongoCollection___construct(2, return_value, return_value_ptr, obj, \
return_value_used TSRMLS_CC); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM();
 
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, &holder);
   RETURN_ZVAL(obj, 0, 1);
 }
 
@@ -89,27 +90,28 @@
   }
 
   zval temp;
-  void *holder;
-
   object_init_ex(return_value, mongo_ce_GridFS);
-  
-  zend_ptr_stack_push(&EG(argument_stack), getThis());
+
+  PUSH_PARAM(getThis());  
 
   if (arg1) {
-    zend_ptr_stack_push(&EG(argument_stack), arg1);
+    PUSH_PARAM(arg1);
     if (arg2) {
-      zend_ptr_stack_push(&EG(argument_stack), arg2);
+      PUSH_PARAM(arg2);
     }
   }
 
-  zend_ptr_stack_2_push(&EG(argument_stack), (void*)ZEND_NUM_ARGS()+1, NULL);
+  PUSH_PARAM((void*)ZEND_NUM_ARGS()+1);
+  PUSH_EO_PARAM();
   zim_MongoGridFS___construct(ZEND_NUM_ARGS()+1, &temp, NULL, return_value, \
                return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+
+  POP_PARAM(); POP_PARAM();
 
   if (arg1) {
-    zend_ptr_stack_pop(&EG(argument_stack));
+    POP_PARAM();
     if (arg2) {
-      zend_ptr_stack_pop(&EG(argument_stack));
+      POP_PARAM();
     }
   }
 }
@@ -119,11 +121,11 @@
   Z_TYPE(l) = IS_LONG;
   Z_LVAL(l) = -1;
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, &l, 1, NULL);
+  PUSH_PARAM(&l); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoDB_setProfilingLevel(1, return_value, return_value_ptr, getThis(), \
                return_value_used TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 }
 
 PHP_METHOD(MongoDB, setProfilingLevel) {
@@ -145,12 +147,11 @@
   MAKE_STD_ZVAL(cmd_return);
   cmd_ptr = cmd_return;
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, data, name, 3, NULL);
+  PUSH_PARAM(zlink); PUSH_PARAM(data); PUSH_PARAM(name); PUSH_PARAM((void*)3);
+  PUSH_EO_PARAM();
   zim_MongoUtil_dbCommand(3, cmd_return, &cmd_return, NULL, return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
                &holder);
-  zval_ptr_dtor(&data);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval **ok;
   if (zend_hash_find(Z_ARRVAL_P(cmd_return), "ok", 3, (void**)&ok) == SUCCESS &&
@@ -177,18 +178,13 @@
 
   zval *name = zend_read_property(mongo_ce_Mongo, getThis(), "name", strlen("name"), \
0 TSRMLS_CC);  
-  zval *cmd_return, *cmd_ptr;
-  MAKE_STD_ZVAL(cmd_return);
-  cmd_ptr = cmd_return;
-
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, data, name, 3, NULL);
-  zim_MongoUtil_dbCommand(3, cmd_return, &cmd_return, NULL, return_value_used \
TSRMLS_CC); +  PUSH_PARAM(zlink); PUSH_PARAM(data); PUSH_PARAM(name); \
PUSH_PARAM((void*)3); +  PUSH_EO_PARAM();
+  zim_MongoUtil_dbCommand(3, return_value, return_value_ptr, NULL, return_value_used \
TSRMLS_CC); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder);  zval_ptr_dtor(&data);
-  zval_ptr_dtor(&cmd_return);
-  zval_ptr_dtor(&cmd_ptr);
 }
 
 PHP_METHOD(MongoDB, repair) {
@@ -212,11 +208,12 @@
   MAKE_STD_ZVAL(cmd_return);
   cmd_ptr = cmd_return;
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, data, name, 3, NULL);
+  PUSH_PARAM(zlink); PUSH_PARAM(data); PUSH_PARAM(name); PUSH_PARAM((void*)3);
+  PUSH_EO_PARAM();
   zim_MongoUtil_dbCommand(3, cmd_return, &cmd_return, NULL, return_value_used \
TSRMLS_CC); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder);  zval_ptr_dtor(&data);
   zval_ptr_dtor(&cmd_return);
   zval_ptr_dtor(&cmd_ptr);
@@ -251,16 +248,18 @@
   MAKE_STD_ZVAL(cmd_return);
   cmd_ptr = cmd_return;
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, data, name, 3, NULL);
+  PUSH_PARAM(zlink); PUSH_PARAM(data); PUSH_PARAM(name); PUSH_PARAM((void*)3);
+  PUSH_EO_PARAM();
   zim_MongoUtil_dbCommand(3, cmd_return, &cmd_return, NULL, return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   // get the collection we just created
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, collection, 1, NULL);
+  PUSH_PARAM(collection); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoDB_selectCollection(1, return_value, return_value_ptr, getThis(), \
                return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&data);
   zval_ptr_dtor(&cmd_ptr);
@@ -274,11 +273,12 @@
 
   if (Z_TYPE_P(collection) != IS_OBJECT ||
       Z_OBJCE_P(collection) != mongo_ce_Collection) {
-    zend_ptr_stack_n_push(&EG(argument_stack), 4, getThis(), collection, 2, NULL);
-    zim_MongoDB_selectCollection(1, collection, &collection, getThis(), \
return_value_used TSRMLS_CC);  
-    void *holder;
-    zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, \
&holder); +    PUSH_PARAM(getThis()); PUSH_PARAM(collection); PUSH_PARAM((void*)2);
+    PUSH_EO_PARAM();
+    zim_MongoDB_selectCollection(1, collection, &collection, getThis(), \
return_value_used TSRMLS_CC); +    POP_EO_PARAM();
+    POP_PARAM(); POP_PARAM(); POP_PARAM();
   }
   zim_MongoCollection_drop(0, return_value, return_value_ptr, collection, \
return_value_used TSRMLS_CC);  }
@@ -292,11 +292,11 @@
   zval *collection;
   MAKE_STD_ZVAL(collection);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, nss, 1, NULL);
+  PUSH_PARAM(nss); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoDB_selectCollection(1, collection, &collection, getThis(), \
                return_value_used TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
   
   // do find  
   zval *cursor;
@@ -342,21 +342,21 @@
 }
 
 PHP_METHOD(MongoDB, getCursorInfo) {
-  zval *zlink = zend_read_property(mongo_ce_Mongo, getThis(), "connection", \
strlen("connection"), 0 TSRMLS_CC); +  zval *zlink = \
zend_read_property(mongo_ce_Mongo, getThis(), "connection", strlen("connection"), \
NOISY TSRMLS_CC);  
   zval *data;
   MAKE_STD_ZVAL(data);
   array_init(data);
   add_assoc_long(data, "cursorInfo", 1);
 
-  zval *zname = zend_read_property(mongo_ce_Mongo, getThis(), "name", \
                strlen("name"), 0 TSRMLS_CC);
-
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, data, zname, 3, NULL);
+  zval *name = zend_read_property(mongo_ce_Mongo, getThis(), "name", strlen("name"), \
NOISY TSRMLS_CC);  
+  PUSH_PARAM(zlink); PUSH_PARAM(data); PUSH_PARAM(name); PUSH_PARAM((void*)3);
+  PUSH_EO_PARAM();
   zim_MongoUtil_dbCommand(3, return_value, &return_value, getThis(), \
return_value_used TSRMLS_CC); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder);  zval_ptr_dtor(&data);
 }
 
@@ -366,16 +366,18 @@
     return;
   }
 
-  void *holder;
   zval **id;
   if (Z_TYPE_P(obj) == IS_ARRAY &&
       zend_hash_find(Z_ARRVAL_P(obj), "_id", 4, (void**)&id) == SUCCESS) {
 
     zval_add_ref(&ns);
     zval_add_ref(id);
-    zend_ptr_stack_n_push(&EG(argument_stack), 4, ns, *id, 2, NULL);
+
+    PUSH_PARAM(ns); PUSH_PARAM(*id); PUSH_PARAM((void*)2);
+    PUSH_EO_PARAM();
     zim_MongoDBRef_create(2, return_value, return_value_ptr, NULL, return_value_used \
                TSRMLS_CC);
-    zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, \
&holder); +    POP_EO_PARAM();
+    POP_PARAM(); POP_PARAM(); POP_PARAM();
 
     return;
   }
@@ -384,9 +386,12 @@
 
     zval_add_ref(&ns);
     zval_add_ref(&obj);
-    zend_ptr_stack_n_push(&EG(argument_stack), 4, ns, obj, 2, NULL);
+
+    PUSH_PARAM(ns); PUSH_PARAM(obj); PUSH_PARAM((void*)2);
+    PUSH_EO_PARAM();
     zim_MongoDBRef_create(2, return_value, return_value_ptr, NULL, return_value_used \
                TSRMLS_CC);
-    zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, \
&holder); +    POP_EO_PARAM();
+    POP_PARAM(); POP_PARAM(); POP_PARAM();
 
     return;
   }
@@ -399,12 +404,11 @@
     return;
   }
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 4, getThis(), ref, 2, NULL);
-
+  PUSH_PARAM(getThis()); PUSH_PARAM(ref); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
   zim_MongoDBRef_get(2, return_value, return_value_ptr, NULL, return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM();
 }
 
 PHP_METHOD(MongoDB, execute) {
@@ -428,11 +432,11 @@
     MAKE_STD_ZVAL(obj);
     object_init_ex(obj, mongo_ce_Code);
 
-    zend_ptr_stack_n_push(&EG(argument_stack), 3, code, 1, NULL);
+    PUSH_PARAM(code); PUSH_PARAM((void*)1);
+    PUSH_EO_PARAM();
     zim_MongoCode___construct(1, return_value, return_value_ptr, obj, \
                return_value_used TSRMLS_CC);
-
-    void *holder;
-    zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+    POP_EO_PARAM();
+    POP_PARAM(); POP_PARAM();
 
     code = obj;
   }
@@ -447,12 +451,12 @@
   add_assoc_zval(zdata, "args", args);
 
   zval *zname = zend_read_property(mongo_ce_Mongo, getThis(), "name", \
                strlen("name"), NOISY TSRMLS_CC);
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, zdata, zname, 3, NULL);
 
+  PUSH_PARAM(zlink); PUSH_PARAM(zdata); PUSH_PARAM(zname); PUSH_PARAM((void*)3);
+  PUSH_EO_PARAM();
   zim_MongoUtil_dbCommand(3, return_value, return_value_ptr, NULL, return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&zdata);
   zval_ptr_dtor(&args);
http://cvs.php.net/viewvc.cgi/pecl/mongo/gridfs.c?r1=1.1&r2=1.2&diff_format=u
Index: pecl/mongo/gridfs.c
diff -u pecl/mongo/gridfs.c:1.1 pecl/mongo/gridfs.c:1.2
--- pecl/mongo/gridfs.c:1.1	Tue May 19 14:06:54 2009
+++ pecl/mongo/gridfs.c	Wed May 20 20:23:33 2009
@@ -38,7 +38,6 @@
   *mongo_ce_GridFSCursor = NULL;
 
 PHP_METHOD(MongoGridFS, __construct) {
-  void *holder;
   zval *zdb;
   char *files = 0, *chunks = 0;
   int files_len = 0, chunks_len = 0;
@@ -65,9 +64,11 @@
   MAKE_STD_ZVAL(zfile);
   ZVAL_STRING(zfile, files, 1);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 4, zdb, zfile, 2, NULL);
+  PUSH_PARAM(zdb); PUSH_PARAM(zfile); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
   zim_MongoCollection___construct(2, return_value, return_value_ptr, getThis(), \
                return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); 
 
   zval *zchunks;
   MAKE_STD_ZVAL(zchunks);
@@ -77,9 +78,11 @@
   MAKE_STD_ZVAL(zchunk);
   ZVAL_STRING(zchunk, chunks, 1);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 4, zdb, zchunk, 2, NULL);
+  PUSH_PARAM(zdb); PUSH_PARAM(zchunk); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
   zim_MongoCollection___construct(2, return_value, return_value_ptr, zchunks, \
                return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); 
   
   zend_update_property(mongo_ce_GridFS, getThis(), "chunks", strlen("chunks"), \
zchunks TSRMLS_CC);  
@@ -88,9 +91,11 @@
   MAKE_STD_ZVAL(zidx);
   ZVAL_STRING(zidx, "n", 1);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, zidx, 1, NULL);
+  PUSH_PARAM(zidx); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCollection_ensureIndex(1, return_value, return_value_ptr, zchunks, \
                return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&zfile);
   zval_ptr_dtor(&zchunk);
@@ -110,11 +115,11 @@
   zval *zchunks = zend_read_property(mongo_ce_GridFS, getThis(), "chunks", \
strlen("chunks"), NOISY TSRMLS_CC);  zval *zdb = zend_read_property(mongo_ce_GridFS, \
getThis(), "db", strlen("db"), NOISY TSRMLS_CC);  
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, zchunks, 1, NULL);
+  PUSH_PARAM(zchunks); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoDB_dropCollection(1, return_value, return_value_ptr, zdb, \
                return_value_used TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zim_MongoCollection_drop(0, return_value, return_value_ptr, getThis(), \
return_value_used TSRMLS_CC);  }
@@ -126,8 +131,6 @@
     return;
   }
 
-  object_init_ex(return_value, mongo_ce_GridFSCursor);
-
   zval *zdb = zend_read_property(mongo_ce_GridFS, getThis(), "db", strlen("db"), \
NOISY TSRMLS_CC);  zval *zlink = zend_read_property(mongo_ce_DB, zdb, "connection", \
strlen("connection"), NOISY TSRMLS_CC);  zval *zns = \
zend_read_property(mongo_ce_GridFS, getThis(), "ns", strlen("ns"), NOISY TSRMLS_CC); \
@@ -148,13 +151,14 @@  zval_add_ref(&zquery);
   }
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 7, getThis(), zlink, zns, zquery, \
                zfields, 5, NULL);
-
   zval temp;
-  zim_MongoGridFSCursor___construct(5, &temp, NULL, return_value, return_value_used \
TSRMLS_CC); +  object_init_ex(return_value, mongo_ce_GridFSCursor);
 
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 7, &holder, &holder, &holder, &holder, \
&holder, &holder, &holder); +  PUSH_PARAM(getThis()); PUSH_PARAM(zlink); \
PUSH_PARAM(zns); PUSH_PARAM(zquery); PUSH_PARAM(zfields); PUSH_PARAM((void*)5); +  \
PUSH_EO_PARAM(); +  zim_MongoGridFSCursor___construct(5, &temp, NULL, return_value, \
return_value_used TSRMLS_CC); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&zquery);
   zval_ptr_dtor(&zfields);
@@ -210,7 +214,6 @@
 
   // insert chunks
   zval *chunks = zend_read_property(mongo_ce_GridFS, getThis(), "chunks", \
                strlen("chunks"), NOISY TSRMLS_CC);
-  void *holder;
   while (pos < size) {
     chunk_size = size-pos >= MonGlo(chunk_size) ? MonGlo(chunk_size) : size-pos;
     char *buf = (char*)emalloc(chunk_size);
@@ -232,9 +235,12 @@
     add_assoc_stringl(zchunk, "data", buf, chunk_size, DUP);
 
     // insert chunk
-    zend_ptr_stack_n_push(&EG(argument_stack), 3, zchunk, 1, NULL);
+
+    PUSH_PARAM(zchunk); PUSH_PARAM((void*)1);
+    PUSH_EO_PARAM();
     zim_MongoCollection_insert(1, return_value, return_value_ptr, chunks, \
                return_value_used TSRMLS_CC);
-    zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+    POP_EO_PARAM();
+    POP_PARAM(); POP_PARAM(); 
     
     // increment counters
     pos += chunk_size;
@@ -282,9 +288,11 @@
   */
 
   // insert file
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, zfile, 1, NULL);
+  PUSH_PARAM(zfile); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCollection_insert(1, return_value, return_value_ptr, getThis(), \
                return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); 
 
   //  zval_ptr_dtor(&hash);
   //  free_cursor(cursor);
@@ -321,10 +329,11 @@
   zval *file;
   MAKE_STD_ZVAL(file);
 
-  void *holder;
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, zquery, 1, NULL);
+  PUSH_PARAM(zquery); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCollection_findOne(1, file, &file, getThis(), return_value_used \
                TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); 
 
   if (Z_TYPE_P(file) == IS_NULL) {
     RETVAL_ZVAL(file, 0, 1);
@@ -333,9 +342,11 @@
     object_init_ex(return_value, mongo_ce_GridFSFile);
 
     zval temp;
-    zend_ptr_stack_n_push(&EG(argument_stack), 4, getThis(), file, 2, NULL);
+    PUSH_PARAM(getThis()); PUSH_PARAM(file); PUSH_PARAM((void*)2);
+    PUSH_EO_PARAM();
     zim_MongoGridFSFile___construct(2, &temp, NULL, return_value, return_value_used \
                TSRMLS_CC);
-    zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, \
&holder); +    POP_EO_PARAM();
+    POP_PARAM(); POP_PARAM(); POP_PARAM();
   }
 
   zval_ptr_dtor(&file);
@@ -367,10 +378,11 @@
   zval *zcursor;
   MAKE_STD_ZVAL(zcursor);
 
-  void *holder;
-  zend_ptr_stack_n_push(&EG(argument_stack), 4, criteria, zfields, 2, NULL);
+  PUSH_PARAM(criteria); PUSH_PARAM(zfields); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
   zim_MongoCollection_find(2, zcursor, &zcursor, getThis(), return_value_used \
                TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&zfields);
 
@@ -393,10 +405,12 @@
     zval_add_ref(id);
     add_assoc_zval(temp, "files_id", *id);
 
-
-    zend_ptr_stack_n_push(&EG(argument_stack), 3, temp, 1, NULL);
+ 
+    PUSH_PARAM(temp); PUSH_PARAM((void*)1);
+    PUSH_EO_PARAM();
     zim_MongoCollection_remove(1, return_value, return_value_ptr, chunks, \
                return_value_used TSRMLS_CC);
-    zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+    POP_EO_PARAM();
+    POP_PARAM(); POP_PARAM();
 
     zval_ptr_dtor(&temp);
     zval_ptr_dtor(&next);
@@ -410,9 +424,11 @@
   Z_TYPE(zjust_one) = IS_BOOL;
   zjust_one.value.lval = just_one;
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 4, criteria, &zjust_one, 2, NULL);
+  PUSH_PARAM(criteria); PUSH_PARAM(&zjust_one); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
   zim_MongoCollection_remove(2, return_value, return_value_ptr, getThis(), \
                return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&criteria);
 }
@@ -452,10 +468,11 @@
   array_init(extra);
   add_assoc_string(extra, "filename", new_name, 1);
 
-  void *holder;
-  zend_ptr_stack_n_push(&EG(argument_stack), 4, *temp, extra, 2, NULL);
+  PUSH_PARAM(*temp); PUSH_PARAM(extra); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
   zim_MongoGridFS_storeFile(2, return_value, return_value_ptr, getThis(), \
                return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&extra);
 }
@@ -527,10 +544,11 @@
   array_init(n);
   add_assoc_long(n, "n", 1);  
 
-  void *holder;
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, n, 1, NULL);
+  PUSH_PARAM(n); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCollection_ensureIndex(1, return_value, return_value_ptr, chunks, \
                return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&n);
 
@@ -563,18 +581,22 @@
   zval *cursor;
   MAKE_STD_ZVAL(cursor);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, query, 1, NULL);
+  PUSH_PARAM(query); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCollection_find(1, cursor, &cursor, chunks, return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zval *sort;
   MAKE_STD_ZVAL(sort);
   array_init(sort);
   add_assoc_long(sort, "n", 1);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, sort, 1, NULL);
+  PUSH_PARAM(sort); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCursor_sort(1, cursor, &cursor, cursor, return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zval *next;
   MAKE_STD_ZVAL(next);
@@ -619,8 +641,6 @@
 }
 
 PHP_METHOD(MongoGridFSFile, getBytes) {
-  void *holder;
-
   zval *file = zend_read_property(mongo_ce_GridFSFile, getThis(), "file", \
strlen("file"), NOISY TSRMLS_CC);  zval **id;
   zend_hash_find(Z_ARRVAL_P(file), "filename", strlen("filename")+1, (void**)&id);
@@ -640,9 +660,11 @@
   array_init(n);
   add_assoc_long(n, "n", 1);  
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, n, 1, NULL);
+  PUSH_PARAM(n); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCollection_ensureIndex(1, return_value, return_value_ptr, chunks, \
                return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&n);
 
@@ -656,18 +678,22 @@
   zval *cursor;
   MAKE_STD_ZVAL(cursor);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, query, 1, NULL);
+  PUSH_PARAM(query); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCollection_find(1, cursor, &cursor, chunks, return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zval *sort;
   MAKE_STD_ZVAL(sort);
   array_init(sort);
   add_assoc_long(sort, "n", 1);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, sort, 1, NULL);
+  PUSH_PARAM(sort); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCursor_sort(1, cursor, &cursor, cursor, return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   char *str = (char*)emalloc(Z_LVAL_PP(size));
   char *str_ptr = str;
@@ -722,7 +748,6 @@
 
 
 PHP_METHOD(MongoGridFSCursor, __construct) {
-  void *holder;
   zval *gridfs = 0, *connection = 0, *ns = 0, *query = 0, *fields = 0;
 
   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Ozzzz", &gridfs, \
mongo_ce_GridFS, &connection, &ns, &query, &fields) == FAILURE) { @@ -731,9 +756,11 \
@@  
   zend_update_property(mongo_ce_GridFSCursor, getThis(), "gridfs", strlen("gridfs"), \
gridfs TSRMLS_CC);  
-  zend_ptr_stack_n_push(&EG(argument_stack), 6, connection, ns, query, fields, 4, \
NULL); +  PUSH_PARAM(connection); PUSH_PARAM(ns); PUSH_PARAM(query); \
PUSH_PARAM(fields); PUSH_PARAM((void*)4); +  PUSH_EO_PARAM();
   zim_MongoCursor___construct(4, NULL, NULL, getThis(), return_value_used \
                TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 6, &holder, &holder, &holder, &holder, \
&holder, &holder); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 }
 
 PHP_METHOD(MongoGridFSCursor, getNext) {
@@ -751,12 +778,13 @@
   object_init_ex(return_value, mongo_ce_GridFSFile);
 
   zval temp;
-  void *holder;
   zval *gridfs = zend_read_property(mongo_ce_GridFSCursor, getThis(), "gridfs", \
strlen("gridfs"), NOISY TSRMLS_CC);  
-  zend_ptr_stack_n_push(&EG(argument_stack), 4, gridfs, cursor->current, 2, NULL);
+  PUSH_PARAM(gridfs); PUSH_PARAM(cursor->current); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
   zim_MongoGridFSFile___construct(2, &temp, NULL, return_value, return_value_used \
                TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM();
 }
 
 PHP_METHOD(MongoGridFSCursor, key) {
http://cvs.php.net/viewvc.cgi/pecl/mongo/mongo.c?r1=1.3&r2=1.4&diff_format=u
Index: pecl/mongo/mongo.c
diff -u pecl/mongo/mongo.c:1.3 pecl/mongo/mongo.c:1.4
--- pecl/mongo/mongo.c:1.3	Tue May 19 14:06:54 2009
+++ pecl/mongo/mongo.c	Wed May 20 20:23:33 2009
@@ -363,11 +363,11 @@
   ZVAL_STRING(&zusername, "", 0);
   ZVAL_STRING(&zpassword, "", 0);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 4, &zusername, &zpassword, 2, NULL);
-  zim_Mongo_connectUtil(2, return_value, &return_value, getThis(), return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, &holder);
+  PUSH_PARAM(&zusername); PUSH_PARAM(&zpassword); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
+  zim_Mongo_connectUtil(2, return_value, return_value_ptr, getThis(), \
return_value_used TSRMLS_CC); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM();
 }
 
 /* {{{ Mongo->pairConnect
@@ -380,11 +380,11 @@
   ZVAL_STRING(&zusername, "", 0);
   ZVAL_STRING(&zpassword, "", 0);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 4, &zusername, &zpassword, 2, NULL);
-  zim_Mongo_connectUtil(2, return_value, &return_value, getThis(), return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, &holder);
+  PUSH_PARAM(&zusername); PUSH_PARAM(&zpassword); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
+  zim_Mongo_connectUtil(2, return_value, return_value_ptr, getThis(), \
return_value_used TSRMLS_CC); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM();
 }
 
 /* {{{ Mongo->persistConnect
@@ -397,11 +397,11 @@
     return;
   } 
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 4, &zusername, &zpassword, 2, NULL);
-  zim_Mongo_connectUtil(2, return_value, &return_value, getThis(), return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, &holder);
+  PUSH_PARAM(&zusername); PUSH_PARAM(&zpassword); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
+  zim_Mongo_connectUtil(2, return_value, return_value_ptr, getThis(), \
return_value_used TSRMLS_CC); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM();
 }
 
 /* {{{ Mongo->pairPersistConnect
@@ -415,11 +415,11 @@
     return;
   } 
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 4, &zusername, &zpassword, 2, NULL);
-  zim_Mongo_connectUtil(2, return_value, &return_value, getThis(), return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, &holder);
+  PUSH_PARAM(&zusername); PUSH_PARAM(&zpassword); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
+  zim_Mongo_connectUtil(2, return_value, return_value_ptr, getThis(), \
return_value_used TSRMLS_CC); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM();
 }
 
 
@@ -647,11 +647,12 @@
   MAKE_STD_ZVAL(obj);
   object_init_ex(obj, mongo_ce_DB);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 4, getThis(), db, 2, NULL);
-  zim_MongoDB___construct(2, return_value, &return_value, obj, return_value_used \
TSRMLS_CC); +  PUSH_PARAM(getThis()); PUSH_PARAM(db); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
+  zim_MongoDB___construct(2, return_value, return_value_ptr, obj, return_value_used \
TSRMLS_CC); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM();
 
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 4, &holder, &holder, &holder, &holder);
   RETURN_ZVAL(obj, 0, 1);
 }
 /* }}} */
@@ -676,11 +677,11 @@
     zval_add_ref(&db);
   }
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, collection, 1, NULL);
+  PUSH_PARAM(collection); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoDB_selectCollection(1, return_value, return_value_ptr, db, \
                return_value_used TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&db);
 }
@@ -737,12 +738,11 @@
     zval_add_ref(&backup);
   }
   
-  int param_num = 2;
-  void *holder;
-
-  zend_ptr_stack_n_push(&EG(argument_stack), param_num+2, preserve_clones, backup, \
                param_num, NULL);
-  zim_MongoDB_repair(param_num, return_value, return_value_ptr, db, 0 TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), param_num+2, &holder, &holder, &holder, \
&holder); +  PUSH_PARAM(preserve_clones); PUSH_PARAM(backup); PUSH_PARAM((void*)2);
+  PUSH_EO_PARAM();
+  zim_MongoDB_selectCollection(1, return_value, return_value_ptr, db, \
return_value_used TSRMLS_CC); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&backup);
   zval_ptr_dtor(&preserve_clones);
@@ -763,12 +763,11 @@
   MAKE_STD_ZVAL(name);
   ZVAL_STRING(name, "admin", 1);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, data, name, 3, NULL);
-
+  PUSH_PARAM(zlink); PUSH_PARAM(data); PUSH_PARAM(name); PUSH_PARAM((void*)3);
+  PUSH_EO_PARAM();
   zim_MongoUtil_dbCommand(3, return_value, return_value_ptr, NULL, return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&name);
   zval_ptr_dtor(&data);
@@ -789,12 +788,11 @@
   MAKE_STD_ZVAL(name);
   ZVAL_STRING(name, "admin", 1);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, data, name, 3, NULL);
-
+  PUSH_PARAM(zlink); PUSH_PARAM(data); PUSH_PARAM(name); PUSH_PARAM((void*)3);
+  PUSH_EO_PARAM();
   zim_MongoUtil_dbCommand(3, return_value, return_value_ptr, NULL, return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&name);
   zval_ptr_dtor(&data);
@@ -815,12 +813,11 @@
   MAKE_STD_ZVAL(name);
   ZVAL_STRING(name, "admin", 1);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, data, name, 3, NULL);
-
+  PUSH_PARAM(zlink); PUSH_PARAM(data); PUSH_PARAM(name); PUSH_PARAM((void*)3);
+  PUSH_EO_PARAM();
   zim_MongoUtil_dbCommand(3, return_value, return_value_ptr, NULL, return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&name);
   zval_ptr_dtor(&data);
@@ -843,12 +840,11 @@
   MAKE_STD_ZVAL(name);
   ZVAL_STRING(name, "admin", 1);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, data, name, 3, NULL);
-
+  PUSH_PARAM(zlink); PUSH_PARAM(data); PUSH_PARAM(name); PUSH_PARAM((void*)3);
+  PUSH_EO_PARAM();
   zim_MongoUtil_dbCommand(3, return_value, return_value_ptr, NULL, return_value_used \
                TSRMLS_CC);
-
-  void *holder;
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&name);
   zval_ptr_dtor(&data);
http://cvs.php.net/viewvc.cgi/pecl/mongo/mongo.h?r1=1.5&r2=1.6&diff_format=u
Index: pecl/mongo/mongo.h
diff -u pecl/mongo/mongo.h:1.5 pecl/mongo/mongo.h:1.6
--- pecl/mongo/mongo.h:1.5	Tue May 19 14:06:54 2009
+++ pecl/mongo/mongo.h	Wed May 20 20:23:33 2009
@@ -87,6 +87,18 @@
   APPEND_HEADER(buf);                                   \
   serialize_string(&buf, ns, ns_len);              
 
+#if ZEND_MODULE_API_NO >= 20090115
+# define PUSH_PARAM(arg) zend_vm_stack_push(arg TSRMLS_CC)
+# define POP_PARAM() zend_vm_stack_pop(TSRMLS_C)
+# define PUSH_EO_PARAM()
+# define POP_EO_PARAM()
+#else
+# define PUSH_PARAM(arg) zend_ptr_stack_push(&EG(argument_stack), arg)
+# define POP_PARAM() zend_ptr_stack_pop(&EG(argument_stack))
+# define PUSH_EO_PARAM() zend_ptr_stack_push(&EG(argument_stack), NULL)
+# define POP_EO_PARAM() zend_ptr_stack_pop(&EG(argument_stack))
+#endif
+
 typedef struct {
   int ts;
   int paired;
http://cvs.php.net/viewvc.cgi/pecl/mongo/mongo_types.c?r1=1.3&r2=1.4&diff_format=u
Index: pecl/mongo/mongo_types.c
diff -u pecl/mongo/mongo_types.c:1.3 pecl/mongo/mongo_types.c:1.4
--- pecl/mongo/mongo_types.c:1.3	Tue May 19 14:06:54 2009
+++ pecl/mongo/mongo_types.c	Wed May 20 20:23:33 2009
@@ -94,7 +94,7 @@
 /* {{{ MongoId::__construct()
  */
 PHP_METHOD(MongoId, __construct) {
-  zval *id;
+  zval *id = 0;
   char holder[12];
   char *data = holder;
 
@@ -102,7 +102,8 @@
     return;
   }
   
-  if (Z_TYPE_P(id) == IS_STRING && 
+  if (id && 
+      Z_TYPE_P(id) == IS_STRING && 
       Z_STRLEN_P(id) == 24) {
     int i;
     for(i=0;i<12;i++) {
@@ -118,7 +119,8 @@
       data[i] = digit1*16+digit2;
     }
   }
-  else if (Z_TYPE_P(id) == IS_OBJECT &&
+  else if (id && 
+           Z_TYPE_P(id) == IS_OBJECT &&
            Z_OBJCE_P(id) == mongo_ce_Id) {
     zval *zid = zend_read_property(mongo_ce_Id, id, "id", strlen("id"), NOISY \
TSRMLS_CC);  data = (char*)Z_STRVAL_P(zid);
@@ -466,19 +468,22 @@
   zval *collection;
   MAKE_STD_ZVAL(collection);
 
-  void *holder;
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, *ns, 1, NULL);
+  PUSH_PARAM(*ns); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoDB_selectCollection(1, collection, &collection, db, return_value_used \
                TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zval *query;
   MAKE_STD_ZVAL(query);
   array_init(query);
   add_assoc_zval(query, "_id", *id);
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, query, 1, NULL);
+  PUSH_PARAM(query); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCollection_findOne(1, return_value, return_value_ptr, collection, \
                return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   zval_ptr_dtor(&collection);
   zval_ptr_dtor(&query);
http://cvs.php.net/viewvc.cgi/pecl/mongo/package.xml?r1=1.8&r2=1.9&diff_format=u
Index: pecl/mongo/package.xml
diff -u pecl/mongo/package.xml:1.8 pecl/mongo/package.xml:1.9
--- pecl/mongo/package.xml:1.8	Tue May 19 14:06:54 2009
+++ pecl/mongo/package.xml	Wed May 20 20:23:33 2009
@@ -26,6 +26,7 @@
  <license uri="http://www.apache.org/licenses/LICENSE-2.0">Apache License</license>
  <notes>
    Added classes
+   5.3 compatible
  </notes>
  <contents>
    <dir baseinstalldir="/" name="/">
@@ -73,6 +74,7 @@
      <date>2009-05-19</date>
      <notes>
        Added classes
+       5.3 compatible
      </notes>
    </release>
    <release>
http://cvs.php.net/viewvc.cgi/pecl/mongo/util.c?r1=1.1&r2=1.2&diff_format=u
Index: pecl/mongo/util.c
diff -u pecl/mongo/util.c:1.1 pecl/mongo/util.c:1.2
--- pecl/mongo/util.c:1.1	Tue May 19 14:06:54 2009
+++ pecl/mongo/util.c	Wed May 20 20:23:33 2009
@@ -189,24 +189,28 @@
   object_init_ex(cursor, mongo_ce_Cursor);
 
   zval temp;
-  void *holder;
-  zend_ptr_stack_n_push(&EG(argument_stack), 5, zlink, &ns, zdata, 3, 0);
+  PUSH_PARAM(zlink); PUSH_PARAM(&ns); PUSH_PARAM(zdata); PUSH_PARAM((void*)3);
+  PUSH_EO_PARAM();
   zim_MongoCursor___construct(3, &temp, 0, cursor, return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 5, &holder, &holder, &holder, &holder, \
&holder); +  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM(); POP_PARAM(); POP_PARAM();
 
   // limit
   zval limit;
   Z_TYPE(limit) = IS_LONG;
   Z_LVAL(limit) = 1;
 
-  zend_ptr_stack_n_push(&EG(argument_stack), 3, &limit, 1, 0);
+  PUSH_PARAM(&limit); PUSH_PARAM((void*)1);
+  PUSH_EO_PARAM();
   zim_MongoCursor_limit(1, cursor, &cursor, cursor, return_value_used TSRMLS_CC);
-  zend_ptr_stack_n_pop(&EG(argument_stack), 3, &holder, &holder, &holder);
+  POP_EO_PARAM();
+  POP_PARAM(); POP_PARAM();
 
   // query
   zim_MongoCursor_getNext(0, return_value, return_value_ptr, cursor, \
return_value_used TSRMLS_CC);  
   zval_ptr_dtor(&cursor);
+  efree(cmd_ns);
 }
 
 



-- 
PECL CVS Mailing List 
To unsubscribe, visit: http://www.php.net/unsub.php

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic