Browse Source

Don't rely on static data

The ui_enum function gets a const struct obs_ui_info **, which basically
means it expects static data to be used.  I originally had it the other
way around, but yea, it's probably not a good idea, so I'm going to
revert back to the original code instead, which doesn't rely on the data
being static.
jp9000 11 years ago
parent
commit
00a480f77d
2 changed files with 7 additions and 7 deletions
  1. 6 6
      libobs/obs-module.c
  2. 1 1
      libobs/obs-ui.h

+ 6 - 6
libobs/obs-module.c

@@ -78,8 +78,8 @@ complete:
 
 static void module_load_ui_exports(struct obs_module *mod)
 {
-	bool (*enum_func)(size_t idx, const struct obs_ui_info **info);
-	const struct obs_ui_info *ui_info;
+	bool (*enum_func)(size_t idx, struct obs_ui_info *info);
+	struct obs_ui_info ui_info;
 	size_t i = 0;
 
 	enum_func = os_dlsym(mod->module, "enum_ui");
@@ -90,13 +90,13 @@ static void module_load_ui_exports(struct obs_module *mod)
 		struct ui_callback callback;
 		struct dstr name;
 
-		dstr_init_copy(&name, ui_info->name);
+		dstr_init_copy(&name, ui_info.name);
 		dstr_cat(&name, "_");
-		dstr_cat(&name, ui_info->task);
+		dstr_cat(&name, ui_info.task);
 		dstr_cat(&name, "_");
-		dstr_cat(&name, ui_info->target);
+		dstr_cat(&name, ui_info.target);
 
-		callback.ui_info = *ui_info;
+		callback.ui_info = ui_info;
 		callback.callback = os_dlsym(mod->module, name.array);
 
 		if (!callback.callback) {

+ 1 - 1
libobs/obs-ui.h

@@ -67,7 +67,7 @@ struct obs_ui_info {
  * ===========================================
  *   Primary Exports
  * ===========================================
- *   bool enum_ui(size_t idx, const struct obs_ui_info **ui_info);
+ *   bool enum_ui(size_t idx, struct obs_ui_info *ui_info);
  *
  *                idx: index of the enumeration
  *            ui_info: pointer to the ui data for this enumeration