diff options
author | Pieter Noordhuis <pcnoordhuis@gmail.com> | 2014-05-29 08:20:43 -0700 |
---|---|---|
committer | Pieter Noordhuis <pcnoordhuis@gmail.com> | 2014-05-29 08:20:43 -0700 |
commit | 2602e1b6bc19dc191df0c50cd6502578fe492710 (patch) | |
tree | b82713f87b1a8156e4a46ca14f1b25b3ae314a20 | |
parent | f225c276be7fd0646019b51023e3f41566633dfe (diff) | |
parent | 21a1207ae13f3d422fb99669019836da3422b784 (diff) |
Merge pull request #246 from dmelani/master
Less surprising behaviour in redisFree() and freeReplyObject()
-rw-r--r-- | hiredis.c | 5 | ||||
-rw-r--r-- | test.c | 15 |
2 files changed, 20 insertions, 0 deletions
@@ -73,6 +73,9 @@ void freeReplyObject(void *reply) { redisReply *r = reply; size_t j; + if (r == NULL) + return; + switch(r->type) { case REDIS_REPLY_INTEGER: break; /* Nothing to free */ @@ -1001,6 +1004,8 @@ static redisContext *redisContextInit(void) { } void redisFree(redisContext *c) { + if (c == NULL) + return; if (c->fd > 0) close(c->fd); if (c->obuf != NULL) @@ -318,6 +318,19 @@ static void test_reply_reader(void) { redisReaderFree(reader); } +static void test_free_null(void) { + void *redisContext = NULL; + void *reply = NULL; + + test("Don't fail when redisFree is passed a NULL value: "); + redisFree(redisContext); + test_cond(redisContext == NULL); + + test("Don't fail when freeReplyObject is passed a NULL value: "); + freeReplyObject(reply); + test_cond(reply == NULL); +} + static void test_blocking_connection_errors(void) { redisContext *c; @@ -702,6 +715,7 @@ int main(int argc, char **argv) { test_format_commands(); test_reply_reader(); test_blocking_connection_errors(); + test_free_null(); printf("\nTesting against TCP connection (%s:%d):\n", cfg.tcp.host, cfg.tcp.port); cfg.type = CONN_TCP; @@ -723,6 +737,7 @@ int main(int argc, char **argv) { test_blocking_connection(cfg); } + if (fails) { printf("*** %d TESTS FAILED ***\n", fails); return 1; |