summaryrefslogtreecommitdiff
path: root/ext/dba/dba.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/dba/dba.c')
-rw-r--r--ext/dba/dba.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/ext/dba/dba.c b/ext/dba/dba.c
index de6072540d..e7b1068cc5 100644
--- a/ext/dba/dba.c
+++ b/ext/dba/dba.c
@@ -215,7 +215,7 @@ static int le_pdb;
static void dba_close(dba_info *info TSRMLS_DC)
{
if (info->hnd) info->hnd->close(info TSRMLS_CC);
- if (info->path) efree(info->path);
+ if (info->path) pefree(info->path, info->flags&DBA_PERSISTENT);
if (info->fp && info->fp!=info->lock.fp) php_stream_close(info->fp);
if (info->lock.fd) {
php_flock(info->lock.fd, LOCK_UN);
@@ -223,8 +223,8 @@ static void dba_close(dba_info *info TSRMLS_DC)
info->lock.fd = 0;
}
if (info->lock.fp) php_stream_close(info->lock.fp);
- if (info->lock.name) efree(info->lock.name);
- efree(info);
+ if (info->lock.name) pefree(info->lock.name, info->flags&DBA_PERSISTENT);
+ pefree(info, info->flags&DBA_PERSISTENT);
}
/* }}} */
@@ -232,8 +232,8 @@ static void dba_close(dba_info *info TSRMLS_DC)
*/
static void dba_close_rsrc(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
- dba_info *info = (dba_info *)rsrc->ptr;
-
+ dba_info *info = (dba_info *)rsrc->ptr;
+
dba_close(info TSRMLS_CC);
}
/* }}} */
@@ -514,7 +514,7 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
info->mode = modenr;
info->argc = ac - 3;
info->argv = args + 3;
- info->flags = (hptr->flags & ~DBA_LOCK_ALL) | (lock_flag & DBA_LOCK_ALL);
+ info->flags = (hptr->flags & ~DBA_LOCK_ALL) | (lock_flag & DBA_LOCK_ALL) | (persistent ? DBA_PERSISTENT : 0);
info->lock.mode = lock_mode;
/* if any open call is a locking call: