summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--template.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/template.c b/template.c
index 435769c..750f339 100644
--- a/template.c
+++ b/template.c
@@ -48,20 +48,20 @@ int escapeURL(FILE *file, const char *str) {
 
 int escapeXML(FILE *file, const char *str) {
 	while (*str) {
-		int n = 0;
-		switch (*str) {
-			break; case '"': n = fprintf(file, """); str++;
-			break; case '&': n = fprintf(file, "&"); str++;
-			break; case '<': n = fprintf(file, "&lt;"); str++;
-			break; case '>': n = fprintf(file, "&gt;"); str++;
-		}
-		if (n < 0) return n;
 		size_t len = strcspn(str, "\"&<>");
 		if (len) {
 			size_t n = fwrite(str, len, 1, file);
 			if (!n) return -1;
 		}
 		str += len;
+		int n = 0;
+		switch (*str) {
+			break; case '"': str++; n = fprintf(file, "&quot;");
+			break; case '&': str++; n = fprintf(file, "&amp;");
+			break; case '<': str++; n = fprintf(file, "&lt;");
+			break; case '>': str++; n = fprintf(file, "&gt;");
+		}
+		if (n < 0) return n;
 	}
 	return 0;
 }