diff --git a/lib/writeout.c b/lib/writeout.c
index 80ee6f2e32636b0414b17164ce3baf10a6996906..f37cc7cb3e01298e60d9bae4618d50d63dae04de 100644
--- a/lib/writeout.c
+++ b/lib/writeout.c
@@ -93,9 +93,11 @@ void WriteOut(struct UrlData *data)
       else {
         /* this is meant as a variable to output */
         char *end;
+        char keepit;
         int i;
         if(('{' == ptr[1]) && (end=strchr(ptr, '}'))) {
           ptr+=2; /* pass the % and the { */
+          keepit=*end;
           *end=0; /* zero terminate */
           for(i=0; replacements[i].name; i++) {
             if(strequal(ptr, replacements[i].name)) {
@@ -138,6 +140,7 @@ void WriteOut(struct UrlData *data)
             }
           }
           ptr=end+1; /* pass the end */
+          *end = keepit;
         }
         else {
           /* illegal syntax, then just output the characters that are used */