diff options
-rw-r--r-- | ext/dbase/dbase.c | 9 |
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; } |