main-common.h: Add reassign_string().
Simple patch to introduce a convenience function that can
reassign heap-allocated string pointers in place.
Change-Id: If810fe10d4149749202d73f3cf2c9cfef0298754
diff --git a/android/main-common.c b/android/main-common.c
index 990c44b..a030cb6 100644
--- a/android/main-common.c
+++ b/android/main-common.c
@@ -54,6 +54,11 @@
#define D(...) do { if (VERBOSE_CHECK(init)) dprint(__VA_ARGS__); } while (0)
+void reassign_string(char** string, const char* new_value) {
+ free(*string);
+ *string = ASTRDUP(new_value);
+}
+
/*** CONFIGURATION
***/
diff --git a/android/main-common.h b/android/main-common.h
index 38efbd5..53c9029 100644
--- a/android/main-common.h
+++ b/android/main-common.h
@@ -23,6 +23,10 @@
/* Common routines used by both android/main.c and android/main-ui.c */
+// Reset the value of |*string| to a copy of |new_value|. This
+// will free() the previous value of |*string| first.
+void reassign_string(char** string, const char* new_value);
+
/** Emulator user configuration (e.g. last window position)
**/
diff --git a/android/main.c b/android/main.c
index 4f48291..b1a3053 100644
--- a/android/main.c
+++ b/android/main.c
@@ -405,14 +405,11 @@
/* Update CPU architecture for HW configs created from build dir. */
if (inAndroidBuild) {
#if defined(TARGET_ARM)
- free(android_hw->hw_cpu_arch);
- android_hw->hw_cpu_arch = ASTRDUP("arm");
+ reassign_string(&android_hw->hw_cpu_arch, "arm");
#elif defined(TARGET_I386)
- free(android_hw->hw_cpu_arch);
- android_hw->hw_cpu_arch = ASTRDUP("x86");
+ reassign_string(&android_hw->hw_cpu_arch, "x86");
#elif defined(TARGET_MIPS)
- free(android_hw->hw_cpu_arch);
- android_hw->hw_cpu_arch = ASTRDUP("mips");
+ reassign_string(&android_hw->hw_cpu_arch, "mips");
#endif
}
@@ -472,8 +469,7 @@
} else {
D("Auto-detect: Kernel image requires legacy device naming scheme.");
}
- AFREE(hw->kernel_newDeviceNaming);
- hw->kernel_newDeviceNaming = ASTRDUP(newDeviceNaming);
+ reassign_string(&hw->kernel_newDeviceNaming, newDeviceNaming);
}
// Auto-detect YAFFS2 partition support if needed.
@@ -486,8 +482,7 @@
} else {
D("Auto-detect: Kernel does not support YAFFS2 partitions.");
}
- AFREE(hw->kernel_supportsYaffs2);
- hw->kernel_supportsYaffs2 = ASTRDUP(newYaffs2Support);
+ reassign_string(&hw->kernel_supportsYaffs2, newYaffs2Support);
}
if (boot_prop_ip[0]) {
@@ -541,8 +536,7 @@
/* opts->ramdisk is never NULL (see createAVD) here */
if (opts->ramdisk) {
- AFREE(hw->disk_ramdisk_path);
- hw->disk_ramdisk_path = ASTRDUP(opts->ramdisk);
+ reassign_string(&hw->disk_ramdisk_path, opts->ramdisk);
}
else if (!hw->disk_ramdisk_path[0]) {
hw->disk_ramdisk_path = avdInfo_getRamdiskPath(avd);
@@ -1157,8 +1151,7 @@
*/
kcm_extract_charmap_name(opts->charmap, charmap_name,
sizeof(charmap_name));
- AFREE(hw->hw_keyboard_charmap);
- hw->hw_keyboard_charmap = ASTRDUP(charmap_name);
+ reassign_string(&hw->hw_keyboard_charmap, charmap_name);
}
if (opts->gpu) {
@@ -1247,8 +1240,7 @@
exit(1);
}
} else {
- AFREE(opts->accel);
- opts->accel = ASTRDUP("off");
+ reassign_string(&opts->accel, "off");
}
}
@@ -1382,8 +1374,7 @@
}
if (forceArmv7 != 0) {
- AFREE(hw->hw_cpu_model);
- hw->hw_cpu_model = ASTRDUP("cortex-a8");
+ reassign_string(&hw->hw_cpu_model, "cortex-a8");
D("Auto-config: -qemu -cpu %s", hw->hw_cpu_model);
}
@@ -1396,8 +1387,7 @@
char* arch = avdInfo_getTargetCpuArch(avd);
D("Target arch = '%s'", arch ? arch : "NULL");
if (arch != NULL && !strcmp(arch, "x86")) {
- AFREE(hw->hw_cpu_model);
- hw->hw_cpu_model = ASTRDUP("qemu32");
+ reassign_string(&hw->hw_cpu_model, "qemu32");
D("Auto-config: -qemu -cpu %s", hw->hw_cpu_model);
}
AFREE(arch);