diff --git a/src/zscanner/scanner.c.g2 b/src/zscanner/scanner.c.g2
index 342a717bd2292853042121dfb39d569e898df65b..8072cdf55207ce23514097c5eaa9e76247966f61 100644
--- a/src/zscanner/scanner.c.g2
+++ b/src/zscanner/scanner.c.g2
@@ -73128,8 +73128,8 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 	}
 
 	// Get absolute path of the zone file.
-	if (realpath(file_name, (char*)(s->buffer)) != NULL) {
-		char *full_name = strdup((char*)(s->buffer));
+	char *full_name = realpath(file_name, NULL);
+	if (full_name != NULL) {
 		free(s->path);
 		s->path = strdup(dirname(full_name));
 		free(full_name);
diff --git a/src/zscanner/scanner.c.t0 b/src/zscanner/scanner.c.t0
index e793fb8330e85af8212c52e85423ec437f6a7158..684d05d524068acb402da7050b49d95e3d92c2cc 100644
--- a/src/zscanner/scanner.c.t0
+++ b/src/zscanner/scanner.c.t0
@@ -7449,8 +7449,8 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 	}
 
 	// Get absolute path of the zone file.
-	if (realpath(file_name, (char*)(s->buffer)) != NULL) {
-		char *full_name = strdup((char*)(s->buffer));
+	char *full_name = realpath(file_name, NULL);
+	if (full_name != NULL) {
 		free(s->path);
 		s->path = strdup(dirname(full_name));
 		free(full_name);
diff --git a/src/zscanner/scanner.rl b/src/zscanner/scanner.rl
index e53e041c0c5e3ae520e21972d3269e72a1c51a93..506854f52e18715afc735cb990e3477f974ca5ff 100644
--- a/src/zscanner/scanner.rl
+++ b/src/zscanner/scanner.rl
@@ -296,8 +296,8 @@ int zs_scanner_parse_file(zs_scanner_t *s,
 	}
 
 	// Get absolute path of the zone file.
-	if (realpath(file_name, (char*)(s->buffer)) != NULL) {
-		char *full_name = strdup((char*)(s->buffer));
+	char *full_name = realpath(file_name, NULL);
+	if (full_name != NULL) {
 		free(s->path);
 		s->path = strdup(dirname(full_name));
 		free(full_name);