Skip to content

Commit 0eb0f64

Browse files
committed
Use zend_string for DBA update handler
1 parent f8e15f1 commit 0eb0f64

15 files changed

+61
-56
lines changed

ext/dba/dba.c

+1-2
Original file line numberDiff line numberDiff line change
@@ -424,8 +424,7 @@ static void php_dba_update(INTERNAL_FUNCTION_PARAMETERS, int mode)
424424
}
425425
}
426426

427-
RETVAL_BOOL(info->hnd->update(info, ZSTR_VAL(key_str), ZSTR_LEN(key_str),
428-
ZSTR_VAL(value), ZSTR_LEN(value), mode) == SUCCESS);
427+
RETVAL_BOOL(info->hnd->update(info, key_str, value, mode) == SUCCESS);
429428
DBA_RELEASE_HT_KEY_CREATION();
430429
}
431430
/* }}} */

ext/dba/dba_cdb.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ DBA_UPDATE_FUNC(cdb)
180180
return FAILURE; /* database was opened readonly */
181181
if (!mode)
182182
return FAILURE; /* cdb_make doesn't know replace */
183-
if (cdb_make_add(&cdb->m, key, keylen, val, vallen) != -1)
183+
if (cdb_make_add(&cdb->m, ZSTR_VAL(key), ZSTR_LEN(key), ZSTR_VAL(val), ZSTR_LEN(val)) != -1)
184184
return SUCCESS;
185185
#endif
186186
return FAILURE;

ext/dba/dba_db1.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,11 @@ DBA_UPDATE_FUNC(db1)
104104
DBT gval;
105105
DBT gkey;
106106

107-
gkey.data = (char *) key;
108-
gkey.size = keylen;
107+
gkey.data = ZSTR_VAL(key);
108+
gkey.size = ZSTR_LEN(key);
109109

110-
gval.data = (char *) val;
111-
gval.size = vallen;
110+
gval.data = ZSTR_VAL(val);
111+
gval.size = ZSTR_LEN(val);
112112

113113
return dba->dbp->put(dba->dbp, &gkey, &gval, mode == 1 ? R_NOOVERWRITE : 0) != RET_SUCCESS ? FAILURE : SUCCESS;
114114
}

ext/dba/dba_db2.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,11 @@ DBA_UPDATE_FUNC(db2)
103103
DBT gval = {0};
104104
DBT gkey = {0};
105105

106-
gkey.data = (char *) key;
107-
gkey.size = keylen;
106+
gkey.data = ZSTR_VAL(key);
107+
gkey.size = ZSTR_LEN(key);
108108

109-
gval.data = (char *) val;
110-
gval.size = vallen;
109+
gval.data = ZSTR_VAL(val);
110+
gval.size = ZSTR_LEN(val);
111111

112112
if (dba->dbp->put(dba->dbp, NULL, &gkey, &gval,
113113
mode == 1 ? DB_NOOVERWRITE : 0)) {

ext/dba/dba_db3.c

+4-3
Original file line numberDiff line numberDiff line change
@@ -137,11 +137,12 @@ DBA_UPDATE_FUNC(db3)
137137
DBT gkey;
138138

139139
memset(&gkey, 0, sizeof(gkey));
140-
gkey.data = (char *) key; gkey.size = keylen;
140+
gkey.data = ZSTR_VAL(key);
141+
gkey.size = ZSTR_LEN(key);
141142

142143
memset(&gval, 0, sizeof(gval));
143-
gval.data = (char *) val;
144-
gval.size = vallen;
144+
gval.data = ZSTR_VAL(val);
145+
gval.size = ZSTR_LEN(val);
145146

146147
if (!dba->dbp->put(dba->dbp, NULL, &gkey, &gval,
147148
mode == 1 ? DB_NOOVERWRITE : 0)) {

ext/dba/dba_db4.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -173,12 +173,12 @@ DBA_UPDATE_FUNC(db4)
173173
DBT gkey;
174174

175175
memset(&gkey, 0, sizeof(gkey));
176-
gkey.data = (char *) key;
177-
gkey.size = keylen;
176+
gkey.data = ZSTR_VAL(key);
177+
gkey.size = ZSTR_LEN(key);
178178

179179
memset(&gval, 0, sizeof(gval));
180-
gval.data = (char *) val;
181-
gval.size = vallen;
180+
gval.data = ZSTR_VAL(val);
181+
gval.size = ZSTR_LEN(val);
182182

183183
if (!dba->dbp->put(dba->dbp, NULL, &gkey, &gval,
184184
mode == 1 ? DB_NOOVERWRITE : 0)) {

ext/dba/dba_dbm.c

+5-5
Original file line numberDiff line numberDiff line change
@@ -101,18 +101,18 @@ DBA_UPDATE_FUNC(dbm)
101101
datum gval;
102102
datum gkey;
103103

104-
gkey.dptr = (char *) key;
105-
gkey.dsize = keylen;
104+
gkey.dptr = ZSTR_VAL(key);
105+
gkey.dsize = ZSTR_LEN(key);
106106

107107
if (mode == 1) { /* insert */
108108
gval = fetch(gkey);
109-
if(gval.dptr) {
109+
if (gval.dptr) {
110110
return FAILURE;
111111
}
112112
}
113113

114-
gval.dptr = (char *) val;
115-
gval.dsize = vallen;
114+
gval.dptr = ZSTR_VAL(val);
115+
gval.dsize = ZSTR_LEN(val);
116116

117117
return (store(gkey, gval) == -1 ? FAILURE : SUCCESS);
118118
}

ext/dba/dba_flatfile.c

+8-6
Original file line numberDiff line numberDiff line change
@@ -76,21 +76,23 @@ DBA_UPDATE_FUNC(flatfile)
7676
datum gval;
7777
datum gkey;
7878

79-
gkey.dptr = (char *) key;
80-
gkey.dsize = keylen;
81-
gval.dptr = (char *) val;
82-
gval.dsize = vallen;
79+
gkey.dptr = ZSTR_VAL(key);
80+
gkey.dsize = ZSTR_LEN(key);
81+
gval.dptr = ZSTR_VAL(val);
82+
gval.dsize = ZSTR_LEN(val);
8383

8484
switch(flatfile_store(dba, gkey, gval, mode==1 ? FLATFILE_INSERT : FLATFILE_REPLACE)) {
8585
case 0:
8686
return SUCCESS;
8787
case 1:
8888
return FAILURE;
8989
case -1:
90-
php_error_docref1(NULL, key, E_WARNING, "Operation not possible");
90+
// TODO Check when this happens and confirm this can even happen
91+
php_error_docref(NULL, E_WARNING, "Operation not possible");
9192
return FAILURE;
9293
default:
93-
php_error_docref2(NULL, key, val, E_WARNING, "Unknown return value");
94+
// TODO Convert this to an assertion failure
95+
php_error_docref(NULL, E_WARNING, "Unknown return value");
9496
return FAILURE;
9597
}
9698
}

ext/dba/dba_gdbm.c

+8-6
Original file line numberDiff line numberDiff line change
@@ -91,21 +91,23 @@ DBA_UPDATE_FUNC(gdbm)
9191
datum gval;
9292
datum gkey;
9393

94-
gkey.dptr = (char *) key;
95-
gkey.dsize = keylen;
96-
gval.dptr = (char *) val;
97-
gval.dsize = vallen;
94+
gkey.dptr = ZSTR_VAL(key);
95+
gkey.dsize = ZSTR_LEN(key);
96+
gval.dptr = ZSTR_VAL(val);
97+
gval.dsize = ZSTR_LEN(val);
9898

9999
switch (gdbm_store(dba->dbf, gkey, gval, mode == 1 ? GDBM_INSERT : GDBM_REPLACE)) {
100100
case 0:
101101
return SUCCESS;
102102
case 1:
103103
return FAILURE;
104104
case -1:
105-
php_error_docref2(NULL, key, val, E_WARNING, "%s", gdbm_strerror(gdbm_errno));
105+
// TODO Check when this happens and confirm this can even happen
106+
php_error_docref(NULL, E_WARNING, "%s", gdbm_strerror(gdbm_errno));
106107
return FAILURE;
107108
default:
108-
php_error_docref2(NULL, key, val, E_WARNING, "Unknown return value");
109+
// TODO Convert this to an assertion failure
110+
php_error_docref(NULL, E_WARNING, "Unknown return value");
109111
return FAILURE;
110112
}
111113
}

ext/dba/dba_inifile.c

+4-3
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ DBA_UPDATE_FUNC(inifile)
7979
php_error_docref(NULL, E_WARNING, "No key specified");
8080
return 0;
8181
}
82-
ini_key = inifile_key_split((char*)key); /* keylen not needed here */
82+
ini_key = inifile_key_split(ZSTR_VAL(key)); /* keylen not needed here */
8383

84-
ini_val.value = val;
84+
ini_val.value = ZSTR_VAL(val);
8585

8686
if (mode == 1) {
8787
res = inifile_append(dba, &ini_key, &ini_val);
@@ -91,7 +91,8 @@ DBA_UPDATE_FUNC(inifile)
9191
inifile_key_free(&ini_key);
9292
switch(res) {
9393
case -1:
94-
php_error_docref1(NULL, key, E_WARNING, "Operation not possible");
94+
// TODO Check when this happens and confirm this can even happen
95+
php_error_docref(NULL, E_WARNING, "Operation not possible");
9596
return FAILURE;
9697
default:
9798
case 0:

ext/dba/dba_lmdb.c

+7-7
Original file line numberDiff line numberDiff line change
@@ -152,27 +152,27 @@ DBA_UPDATE_FUNC(lmdb)
152152

153153
rc = mdb_txn_begin(LMDB_IT(env), NULL, 0, &LMDB_IT(txn));
154154
if (rc) {
155-
php_error_docref2(NULL, key, val, E_WARNING, "%s", mdb_strerror(rc));
155+
php_error_docref(NULL, E_WARNING, "%s", mdb_strerror(rc));
156156
return FAILURE;
157157
}
158158

159-
k.mv_size = keylen;
160-
k.mv_data = key;
161-
v.mv_size = vallen;
162-
v.mv_data = val;
159+
k.mv_size = ZSTR_LEN(key);
160+
k.mv_data = ZSTR_VAL(key);
161+
v.mv_size = ZSTR_LEN(val);
162+
v.mv_data = ZSTR_VAL(val);
163163

164164
rc = mdb_put(LMDB_IT(txn), LMDB_IT(dbi), &k, &v, mode == 1 ? MDB_NOOVERWRITE : 0);
165165
if (rc) {
166166
if (MDB_KEYEXIST != rc) {
167-
php_error_docref2(NULL, key, val, E_WARNING, "%s", mdb_strerror(rc));
167+
php_error_docref(NULL, E_WARNING, "%s", mdb_strerror(rc));
168168
}
169169
mdb_txn_abort(LMDB_IT(txn));
170170
return FAILURE;
171171
}
172172

173173
rc = mdb_txn_commit(LMDB_IT(txn));
174174
if (rc) {
175-
php_error_docref2(NULL, key, val, E_WARNING, "%s", mdb_strerror(rc));
175+
php_error_docref(NULL, E_WARNING, "%s", mdb_strerror(rc));
176176
mdb_txn_abort(LMDB_IT(txn));
177177
return FAILURE;
178178
}

ext/dba/dba_ndbm.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,10 @@ DBA_UPDATE_FUNC(ndbm)
8282
datum gval;
8383
datum gkey;
8484

85-
gkey.dptr = (char *) key;
86-
gkey.dsize = keylen;
87-
gval.dptr = (char *) val;
88-
gval.dsize = vallen;
85+
gkey.dptr = ZSTR_VAL(key);
86+
gkey.dsize = ZSTR_LEN(key);
87+
gval.dptr = ZSTR_VAL(val);
88+
gval.dsize = ZSTR_LEN(val);
8989

9090
if(!dbm_store(info->dbf, gkey, gval, mode == 1 ? DBM_INSERT : DBM_REPLACE))
9191
return SUCCESS;

ext/dba/dba_qdbm.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,12 @@ DBA_UPDATE_FUNC(qdbm)
9191
{
9292
dba_qdbm_data *dba = info->dbf;
9393

94-
if (dpput(dba->dbf, key, keylen, val, vallen, mode == 1 ? DP_DKEEP : DP_DOVER)) {
94+
if (dpput(dba->dbf, ZSTR_VAL(key), ZSTR_LEN(key), ZSTR_VAL(val), ZSTR_LEN(val), mode == 1 ? DP_DKEEP : DP_DOVER)) {
9595
return SUCCESS;
9696
}
9797

9898
if (dpecode != DP_EKEEP) {
99-
php_error_docref2(NULL, key, val, E_WARNING, "%s", dperrmsg(dpecode));
99+
php_error_docref(NULL, E_WARNING, "%s", dperrmsg(dpecode));
100100
}
101101

102102
return FAILURE;

ext/dba/dba_tcadb.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -104,18 +104,18 @@ DBA_UPDATE_FUNC(tcadb)
104104

105105
if (mode == 1) {
106106
/* Insert */
107-
if (tcadbvsiz(dba->tcadb, key, keylen) > -1) {
107+
if (tcadbvsiz(dba->tcadb, ZSTR_VAL(key), ZSTR_LEN(key)) > -1) {
108108
return FAILURE;
109109
}
110110
}
111111

112-
result = tcadbput(dba->tcadb, key, keylen, val, vallen);
112+
result = tcadbput(dba->tcadb, ZSTR_VAL(key), ZSTR_LEN(key), ZSTR_VAL(val), ZSTR_LEN(val));
113113

114114
if (result) {
115115
return SUCCESS;
116116
}
117117

118-
php_error_docref2(NULL, key, val, E_WARNING, "Error updating data");
118+
php_error_docref(NULL, E_WARNING, "Error updating data");
119119
return FAILURE;
120120
}
121121

ext/dba/php_dba.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ typedef struct dba_handler {
7474
zend_result (*open)(dba_info *, char **error);
7575
void (*close)(dba_info *);
7676
zend_string* (*fetch)(dba_info *, zend_string *, int);
77-
zend_result (*update)(dba_info *, char *, size_t, char *, size_t, int);
77+
zend_result (*update)(dba_info *, zend_string *, zend_string *, int);
7878
zend_result (*exists)(dba_info *, char *, size_t);
7979
zend_result (*delete)(dba_info *, char *, size_t);
8080
char* (*firstkey)(dba_info *, size_t *);
@@ -94,7 +94,7 @@ typedef struct dba_handler {
9494
#define DBA_FETCH_FUNC(x) \
9595
zend_string *dba_fetch_##x(dba_info *info, zend_string *key, int skip)
9696
#define DBA_UPDATE_FUNC(x) \
97-
zend_result dba_update_##x(dba_info *info, char *key, size_t keylen, char *val, size_t vallen, int mode)
97+
zend_result dba_update_##x(dba_info *info, zend_string *key, zend_string *val, int mode)
9898
#define DBA_EXISTS_FUNC(x) \
9999
zend_result dba_exists_##x(dba_info *info, char *key, size_t keylen)
100100
#define DBA_DELETE_FUNC(x) \

0 commit comments

Comments
 (0)