diff --git a/src/text.c b/src/text.c
index 41d827f1759d7f653eb564799f65efba122e1222..66515e48f63ad4b7b5c676b9f01275bff8e89d91 100644
--- a/src/text.c
+++ b/src/text.c
@@ -296,6 +296,18 @@ void do_indent(void)
 	bot = top;
     }
 
+    /* Go through the lines to see if there's a non-empty one. */
+    for (f = top; f != bot->next; f = f->next) {
+	if (f->data[0] != '\0')
+	    break;
+    }
+
+    /* If all lines are empty, there is nothing to do. */
+    if (f == bot->next) {
+	free(line_indent);
+	return;
+    }
+
     /* Set the indentation to either a bunch of spaces or a single tab. */
     if (ISSET(TABS_TO_SPACES)) {
 	charset(line_indent, ' ', tabsize);
@@ -307,16 +319,6 @@ void do_indent(void)
 
     line_indent[line_indent_len] = '\0';
 
-    /* Go through the lines to see if there's a non-empty one. */
-    for (f = top; f != bot->next; f = f->next) {
-	if (f->data[0] != '\0')
-	    break;
-    }
-
-    /* If all lines are empty, there is nothing to do. */
-    if (f == bot->next)
-	return;
-
     /* Go through each of the lines, but skip empty ones. */
     for (f = top; f != bot->next; f = f->next) {
 	size_t line_len = strlen(f->data);