diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c
index c02a9180b2..fba8fb3c02 100644
--- a/src/interfaces/libpq/fe-exec.c
+++ b/src/interfaces/libpq/fe-exec.c
@@ -4185,9 +4185,9 @@ PQescapeInternal(PGconn *conn, const char *str, size_t len, bool as_ident)
 
 	/* Allocate output buffer. */
 	input_len = s - str;
-	result_size = input_len + num_quotes + 3;	/* two quotes, plus a NUL */
+	result_size = input_len + (num_quotes * 2) + 3;	/* two quotes, plus a NUL */
 	if (!as_ident && num_backslashes > 0)
-		result_size += num_backslashes + 2;
+		result_size += (num_backslashes * 2) + 2;
 	result = rp = (char *) malloc(result_size);
 	if (rp == NULL)
 	{
