From 1b677e7e34aefd11031e204a3c31aefa93ee944c Mon Sep 17 00:00:00 2001 From: "Vadim B. Mikheev" Date: Thu, 2 Oct 1997 13:52:29 +0000 Subject: [PATCH] Fix \ handling --- src/backend/commands/trigger.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index c3116ca882..9215f41055 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -159,14 +159,31 @@ CreateTrigger(CreateTrigStmt * stmt) foreach(le, stmt->args) { - char *ar = (char *) lfirst(le); + char *ar = (char *) lfirst(le); len += strlen(ar) + 4; + for ( ; *ar; ar++) + { + if (*ar == '\\') + len++; + } } args = (char *) palloc(len + 1); args[0] = 0; foreach(le, stmt->args) - sprintf(args + strlen(args), "%s\\000", (char *) lfirst(le)); + { + char *s = (char *) lfirst(le); + char *d = args + strlen(args); + + while (*s) + { + if (*s == '\\') + *d++ = '\\'; + *d++ = *s++; + } + *d = 0; + strcat(args, "\\000"); + } values[Anum_pg_trigger_tgnargs - 1] = Int16GetDatum(nargs); values[Anum_pg_trigger_tgargs - 1] = PointerGetDatum(byteain(args)); } -- 2.11.0