From cb89a472b65691df93b1469a577ec94857f37855 Mon Sep 17 00:00:00 2001 From: Pieter Noordhuis Date: Mon, 22 Nov 2010 10:00:45 +0100 Subject: Fix formatting literal percent characters --- hiredis.c | 2 +- test.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/hiredis.c b/hiredis.c index 36ee6d9..a2d8515 100644 --- a/hiredis.c +++ b/hiredis.c @@ -564,7 +564,7 @@ int redisvFormatCommand(char **target, const char *format, va_list ap) { interpolated = 1; break; case '%': - cmd = sdscat(cmd,"%"); + current = sdscat(current,"%"); break; } c++; diff --git a/test.c b/test.c index e8289ba..eb7790b 100644 --- a/test.c +++ b/test.c @@ -65,6 +65,12 @@ static void test_format_commands() { len == 4+4+(3+2)+4+(3+2)+4+(0+2)); free(cmd); + test("Format command with literal %%: "); + len = redisFormatCommand(&cmd,"SET %% %%"); + test_cond(strncmp(cmd,"*3\r\n$3\r\nSET\r\n$1\r\n%\r\n$1\r\n%\r\n",len) == 0 && + len == 4+4+(3+2)+4+(1+2)+4+(1+2)); + free(cmd); + const char *argv[3]; argv[0] = "SET"; argv[1] = "foo"; -- cgit v1.2.3