From 55c58da504235d60edba990e5fa09f02f5e76ce5 Mon Sep 17 00:00:00 2001 From: "Bobby R. Bruce" Date: Wed, 27 Mar 2024 12:21:42 -0700 Subject: [PATCH] base: Convert doGzipLoad to use std::string instead of *char Change-Id: I28c9bf7853267686402b43be00f857914770f7a7 --- src/base/loader/image_file_data.cc | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/base/loader/image_file_data.cc b/src/base/loader/image_file_data.cc index 09db89f3e3..b402b3bbb8 100644 --- a/src/base/loader/image_file_data.cc +++ b/src/base/loader/image_file_data.cc @@ -64,13 +64,10 @@ doGzipLoad(int fd) return -1; } - size_t tmp_len = strlen(P_tmpdir); - char *tmpnam = (char*) malloc(tmp_len + 20); - strcpy(tmpnam, P_tmpdir); - strcat(tmpnam, "/gem5-gz-obj-XXXXXX"); // concat 19 chars + std::string tmpnam_str = std::string(P_tmpdir) + "/gem5-gz-obj-XXXXXX"; + char *tmpnam = const_cast(tmpnam_str.c_str()); fd = mkstemp(tmpnam); // repurposing fd variable for output if (fd < 0) { - free(tmpnam); gzclose(fdz); return fd; } @@ -78,8 +75,6 @@ doGzipLoad(int fd) if (unlink(tmpnam) != 0) warn("couldn't remove temporary file %s\n", tmpnam); - free(tmpnam); - auto buf = new uint8_t[blk_sz]; int r; // size of (r)emaining uncopied data in (buf)fer while ((r = gzread(fdz, buf, blk_sz)) > 0) {