[phc-internals] [phc commit] r648 - trunk

codesite-noreply at google.com codesite-noreply at google.com
Fri Sep 7 19:15:46 CEST 2007


Author: paul.biggar
Date: Fri Sep  7 10:15:08 2007
New Revision: 648

Modified:
   trunk/libphc.cpp

Log:
I hadnt properly tested spliting zvp_clone. It works now.


Modified: trunk/libphc.cpp
==============================================================================
--- trunk/libphc.cpp	(original)
+++ trunk/libphc.cpp	Fri Sep  7 10:15:08 2007
@@ -256,22 +256,33 @@
 }
 
 
-
-// Make a copy of a zval*
+/* Make a copy of *P_ZVP, storing it in *P_ZVP. */
 void
-zvp_clone (zval ** p_zvp, int *is_zvp_new TSRMLS_DC)
+zvp_clone_ex (zval ** p_zvp TSRMLS_DC)
 {
   zval *clone;
   MAKE_STD_ZVAL (clone);
   clone->value = (*p_zvp)->value;
   clone->type = (*p_zvp)->type;
   zval_copy_ctor (clone);
-  assert (is_zvp_new);
+  *p_zvp = clone;
+}
+
+/* Make a copy of *P_ZVP and store it in *P_ZVP. If *IS_ZVP_NEW is
+ * set, call the destructor on *P_ZVP before copying. *IS_ZVP_NEW is
+ * set to true. */
+void
+zvp_clone (zval ** p_zvp, int *is_zvp_new TSRMLS_DC)
+{
+  zval* old = *p_zvp;
+
+  zvp_clone_ex (p_zvp TSRMLS_CC);
+
   if (*is_zvp_new)
-    zval_ptr_dtor (p_zvp);
+    zval_ptr_dtor (&old);
   *is_zvp_new = 1;
-  *p_zvp = clone;
 }
+
 
 // Overwrite one zval with another
 void


More information about the phc-internals mailing list