Skip to content

Commit 7a055ca

Browse files
committed
Use on-stack allocated valiables
1 parent 6930a81 commit 7a055ca

4 files changed

Lines changed: 19 additions & 33 deletions

File tree

cluster_library.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@
1212
#define REDIS_CLUSTER_MOD (REDIS_CLUSTER_SLOTS-1)
1313

1414
/* Complete representation for various commands in RESP */
15-
#define RESP_MULTI_CMD "*1\r\n$5\r\nMULTI\r\n"
16-
#define RESP_EXEC_CMD "*1\r\n$4\r\nEXEC\r\n"
17-
#define RESP_DISCARD_CMD "*1\r\n$7\r\nDISCARD\r\n"
1815
#define RESP_UNWATCH_CMD "*1\r\n$7\r\nUNWATCH\r\n"
1916
#define RESP_CLUSTER_SLOTS_CMD "*2\r\n$7\r\nCLUSTER\r\n$5\r\nSLOTS\r\n"
2017
#define RESP_ASKING_CMD "*1\r\n$6\r\nASKING\r\n"

common.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,11 @@ typedef enum {
289289
#endif
290290
#endif
291291

292+
/* Complete representation for various commands in RESP */
293+
#define RESP_MULTI_CMD "*1\r\n$5\r\nMULTI\r\n"
294+
#define RESP_EXEC_CMD "*1\r\n$4\r\nEXEC\r\n"
295+
#define RESP_DISCARD_CMD "*1\r\n$7\r\nDISCARD\r\n"
296+
292297
/* {{{ struct RedisSock */
293298
typedef struct {
294299
php_stream *stream;

library.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3052,9 +3052,9 @@ PHP_REDIS_API int redis_sock_connect(RedisSock *redis_sock)
30523052
{
30533053
struct timeval tv, read_tv, *tv_ptr = NULL;
30543054
zend_string *persistent_id = NULL, *estr = NULL;
3055-
char host[1024], *pos, *address, *scheme = NULL;
3055+
char host[1024], scheme[8], *pos, *address;
30563056
const char *fmtstr = "%s://%s:%d";
3057-
int host_len, usocket = 0, err = 0, tcp_flag = 1, scheme_free = 0;
3057+
int host_len, usocket = 0, err = 0, tcp_flag = 1;
30583058
ConnectionPool *p = NULL;
30593059

30603060
if (redis_sock->stream != NULL) {
@@ -3063,11 +3063,10 @@ PHP_REDIS_API int redis_sock_connect(RedisSock *redis_sock)
30633063

30643064
address = ZSTR_VAL(redis_sock->host);
30653065
if ((pos = strstr(address, "://")) == NULL) {
3066-
scheme = redis_sock->stream_ctx ? "ssl" : "tcp";
3066+
strcpy(scheme, redis_sock->stream_ctx ? "ssl" : "tcp");
30673067
} else {
3068-
scheme = estrndup(address, pos - address);
3068+
snprintf(scheme, sizeof(scheme), "%.*s", (int)(pos - address), address);
30693069
address = pos + sizeof("://") - 1;
3070-
scheme_free = 1;
30713070
}
30723071
if (address[0] == '/' && redis_sock->port < 1) {
30733072
host_len = snprintf(host, sizeof(host), "unix://%s", address);
@@ -3085,7 +3084,6 @@ PHP_REDIS_API int redis_sock_connect(RedisSock *redis_sock)
30853084
#endif
30863085
host_len = snprintf(host, sizeof(host), fmtstr, scheme, address, redis_sock->port);
30873086
}
3088-
if (scheme_free) efree(scheme);
30893087

30903088
if (redis_sock->persistent) {
30913089
if (INI_INT("redis.pconnect.pooling_enabled")) {

redis.c

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -160,15 +160,11 @@ zend_object_handlers redis_object_handlers;
160160
static int
161161
redis_send_discard(RedisSock *redis_sock)
162162
{
163-
int result = FAILURE;
164-
char *cmd, *resp;
165-
int resp_len, cmd_len;
166-
167-
/* format our discard command */
168-
cmd_len = REDIS_SPPRINTF(&cmd, "DISCARD", "");
163+
char *resp;
164+
int resp_len, result = FAILURE;
169165

170166
/* send our DISCARD command */
171-
if (redis_sock_write(redis_sock, cmd, cmd_len) >= 0 &&
167+
if (redis_sock_write(redis_sock, ZEND_STRL(RESP_DISCARD_CMD)) >= 0 &&
172168
(resp = redis_sock_read(redis_sock,&resp_len)) != NULL)
173169
{
174170
/* success if we get OK */
@@ -178,9 +174,6 @@ redis_send_discard(RedisSock *redis_sock)
178174
efree(resp);
179175
}
180176

181-
/* free our command */
182-
efree(cmd);
183-
184177
/* return success/failure */
185178
return result;
186179
}
@@ -1865,8 +1858,8 @@ PHP_METHOD(Redis, multi)
18651858
{
18661859

18671860
RedisSock *redis_sock;
1868-
char *resp, *cmd;
1869-
int resp_len, cmd_len;
1861+
char *resp;
1862+
int resp_len;
18701863
zval *object;
18711864
zend_long multi_value = MULTI;
18721865

@@ -1897,15 +1890,12 @@ PHP_METHOD(Redis, multi)
18971890
} else if (multi_value == MULTI) {
18981891
/* Don't want to do anything if we're already in MULTI mode */
18991892
if (!IS_MULTI(redis_sock)) {
1900-
cmd_len = REDIS_SPPRINTF(&cmd, "MULTI", "");
19011893
if (IS_PIPELINE(redis_sock)) {
1902-
PIPELINE_ENQUEUE_COMMAND(cmd, cmd_len);
1903-
efree(cmd);
1894+
PIPELINE_ENQUEUE_COMMAND(RESP_MULTI_CMD, sizeof(RESP_MULTI_CMD) - 1);
19041895
REDIS_SAVE_CALLBACK(NULL, NULL);
19051896
REDIS_ENABLE_MODE(redis_sock, MULTI);
19061897
} else {
1907-
SOCKET_WRITE_COMMAND(redis_sock, cmd, cmd_len)
1908-
efree(cmd);
1898+
SOCKET_WRITE_COMMAND(redis_sock, RESP_MULTI_CMD, sizeof(RESP_MULTI_CMD) - 1)
19091899
if ((resp = redis_sock_read(redis_sock, &resp_len)) == NULL) {
19101900
RETURN_FALSE;
19111901
} else if (strncmp(resp, "+OK", 3) != 0) {
@@ -1982,8 +1972,7 @@ redis_sock_read_multibulk_multi_reply(INTERNAL_FUNCTION_PARAMETERS,
19821972
PHP_METHOD(Redis, exec)
19831973
{
19841974
RedisSock *redis_sock;
1985-
char *cmd;
1986-
int cmd_len, ret;
1975+
int ret;
19871976
zval *object, z_ret;
19881977

19891978
if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(),
@@ -1994,16 +1983,13 @@ PHP_METHOD(Redis, exec)
19941983
}
19951984

19961985
if (IS_MULTI(redis_sock)) {
1997-
cmd_len = REDIS_SPPRINTF(&cmd, "EXEC", "");
19981986
if (IS_PIPELINE(redis_sock)) {
1999-
PIPELINE_ENQUEUE_COMMAND(cmd, cmd_len);
2000-
efree(cmd);
1987+
PIPELINE_ENQUEUE_COMMAND(RESP_EXEC_CMD, sizeof(RESP_EXEC_CMD) - 1);
20011988
REDIS_SAVE_CALLBACK(NULL, NULL);
20021989
REDIS_DISABLE_MODE(redis_sock, MULTI);
20031990
RETURN_ZVAL(getThis(), 1, 0);
20041991
}
2005-
SOCKET_WRITE_COMMAND(redis_sock, cmd, cmd_len)
2006-
efree(cmd);
1992+
SOCKET_WRITE_COMMAND(redis_sock, RESP_EXEC_CMD, sizeof(RESP_EXEC_CMD) - 1)
20071993

20081994
ZVAL_NULL(&z_ret);
20091995
ret = redis_sock_read_multibulk_multi_reply(

0 commit comments

Comments
 (0)