summaryrefslogtreecommitdiff
path: root/ext/dba/dba_gdbm.c
diff options
context:
space:
mode:
authorLars Strojny <lstrojny@php.net>2013-01-15 09:30:44 +0100
committerLars Strojny <lstrojny@php.net>2013-01-15 09:30:44 +0100
commiteb40f73ca0a2a7563fbc95cc22741412e0beb76e (patch)
tree20dc73418d5266e84f16f65b2a7c23a463f0113b /ext/dba/dba_gdbm.c
parent6dc80f080ea97c09b36d8a05ec7ec5067f394c01 (diff)
downloadphp-git-eb40f73ca0a2a7563fbc95cc22741412e0beb76e.tar.gz
Bug #62489: dba_insert not working as expected
Diffstat (limited to 'ext/dba/dba_gdbm.c')
-rw-r--r--ext/dba/dba_gdbm.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/ext/dba/dba_gdbm.c b/ext/dba/dba_gdbm.c
index 7534568d39..47dd576496 100644
--- a/ext/dba/dba_gdbm.c
+++ b/ext/dba/dba_gdbm.c
@@ -104,11 +104,18 @@ DBA_UPDATE_FUNC(gdbm)
gval.dptr = (char *) val;
gval.dsize = vallen;
- if(gdbm_store(dba->dbf, gkey, gval,
- mode == 1 ? GDBM_INSERT : GDBM_REPLACE) == 0)
- return SUCCESS;
- php_error_docref2(NULL TSRMLS_CC, key, val, E_WARNING, "%s", gdbm_strerror(gdbm_errno));
- return FAILURE;
+ switch (gdbm_store(dba->dbf, gkey, gval, mode == 1 ? GDBM_INSERT : GDBM_REPLACE)) {
+ case 0:
+ return SUCCESS;
+ case 1:
+ return FAILURE;
+ case -1:
+ php_error_docref2(NULL TSRMLS_CC, key, val, E_WARNING, "%s", gdbm_strerror(gdbm_errno));
+ return FAILURE;
+ default:
+ php_error_docref2(NULL TSRMLS_CC, key, val, E_WARNING, "Unknown return value");
+ return FAILURE;
+ }
}
DBA_EXISTS_FUNC(gdbm)