[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