summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/dbase/dbase.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/ext/dbase/dbase.c b/ext/dbase/dbase.c
index 254cb250d1..adb3e284d2 100644
--- a/ext/dbase/dbase.c
+++ b/ext/dbase/dbase.c
@@ -274,13 +274,18 @@ PHP_FUNCTION(dbase_add_record) {
dbf = dbh->db_fields;
for (i = 0, cur_f = dbf; cur_f < &dbf[num_fields]; i++, cur_f++) {
+ zval tmp;
if (zend_hash_index_find(fields->value.ht, i, (void **)&field) == FAILURE) {
php_error(E_WARNING, "unexpected error");
efree(cp);
RETURN_FALSE;
}
- convert_to_string(field);
- sprintf(t_cp, cur_f->db_format, field->value.str.val);
+
+ tmp = *field;
+ zval_copy_ctor(&tmp);
+ convert_to_string(&tmp);
+ sprintf(t_cp, cur_f->db_format, tmp.value.str.val);
+ zval_dtor(&tmp);
t_cp += cur_f->db_flen;
}