aboutsummaryrefslogtreecommitdiff
path: root/util/oslib-win32.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2020-08-18 12:11:02 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2020-09-30 19:11:36 +0200
commita4c13869f95cb45d657cc1df3803f633221d4971 (patch)
tree8ebf036c107ff7aad647eb31d070fafe7115bb82 /util/oslib-win32.c
parent05512f55aaca92505b75d8fa6818b088a5eeb07f (diff)
oslib: do not call g_strdup from qemu_get_exec_dir
Just return the directory without requiring the caller to free it. This also removes a bogus check for NULL in os_find_datadir and module_load_one; g_strdup of a static variable cannot return NULL. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'util/oslib-win32.c')
-rw-r--r--util/oslib-win32.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/util/oslib-win32.c b/util/oslib-win32.c
index c654dafd93..1a33912944 100644
--- a/util/oslib-win32.c
+++ b/util/oslib-win32.c
@@ -315,7 +315,7 @@ void qemu_set_tty_echo(int fd, bool echo)
}
}
-static char exec_dir[PATH_MAX];
+static char *exec_dir;
void qemu_init_exec_dir(const char *argv0)
{
@@ -324,6 +324,10 @@ void qemu_init_exec_dir(const char *argv0)
char buf[MAX_PATH];
DWORD len;
+ if (exec_dir) {
+ return;
+ }
+
len = GetModuleFileName(NULL, buf, sizeof(buf) - 1);
if (len == 0) {
return;
@@ -336,13 +340,13 @@ void qemu_init_exec_dir(const char *argv0)
}
*p = 0;
if (access(buf, R_OK) == 0) {
- pstrcpy(exec_dir, sizeof(exec_dir), buf);
+ exec_dir = g_strdup(buf);
}
}
-char *qemu_get_exec_dir(void)
+const char *qemu_get_exec_dir(void)
{
- return g_strdup(exec_dir);
+ return exec_dir;
}
#if !GLIB_CHECK_VERSION(2, 50, 0)