[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11341] branches/soc-2007-mosani/source/ blender/blenpluginapi/intern/pluginapi.c: Changes made to plugin api in effort to fix segfault.
Aaron Moore
two.a.ron at gmail.com
Mon Jul 23 03:47:09 CEST 2007
Revision: 11341
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11341
Author: mosani
Date: 2007-07-23 03:47:07 +0200 (Mon, 23 Jul 2007)
Log Message:
-----------
Changes made to plugin api in effort to fix segfault.
Modified Paths:
--------------
branches/soc-2007-mosani/source/blender/blenpluginapi/intern/pluginapi.c
Modified: branches/soc-2007-mosani/source/blender/blenpluginapi/intern/pluginapi.c
===================================================================
--- branches/soc-2007-mosani/source/blender/blenpluginapi/intern/pluginapi.c 2007-07-23 01:34:07 UTC (rev 11340)
+++ branches/soc-2007-mosani/source/blender/blenpluginapi/intern/pluginapi.c 2007-07-23 01:47:07 UTC (rev 11341)
@@ -340,6 +340,23 @@
freeN(d);
}
+static void copy_descriptor(plugin_descriptor_t * src,
+ plugin_descriptor_t * dst)
+{
+ if (dst->name) { freeN(dst->name); }
+ if (dst->plugin_filename) { freeN(dst->plugin_filename); }
+ if (dst->menu_entry) { freeN(dst->menu_entry); }
+ if (dst->author) { freeN(dst->author); }
+ if (dst->copyright) { freeN(dst->copyright); }
+ if (dst->help) { freeN(dst->help); }
+ if (dst->date) { freeN(dst->date); }
+ if (dst->file_pattern) { freeN(dst->file_pattern); }
+
+ *dst = *src;
+
+ freeN(src);
+}
+
/* ---------------------------------------------------------------------
old plugin wrapper code
--------------------------------------------------------------------- */
@@ -769,15 +786,15 @@
return (plugin_descriptor_t *) desc_lists[type].first;
}
-static void insert_desc_entry(plugin_descriptor_t * t)
+static plugin_descriptor_t * insert_desc_entry(plugin_descriptor_t * t)
{
plugin_type_t type = t->plugin_type;
plugin_descriptor_t * it = get_desc_list(type);
while (it) {
- if (strcmp(it->name, t->name) == 0) {
- break;
- }
+ if (strcmp(it->name, t->name) == 0) {
+ break;
+ }
it = it->next;
}
@@ -785,14 +802,14 @@
BLI_addtail(&desc_lists[type], t);
} else {
if (t->interface_version || !it->interface_version) {
- BLI_insertlink(&desc_lists[type], it, t);
- BLI_remlink(&desc_lists[type], it);
-
- delete_descriptor(it);
+ move_descriptor(t, it);
+ return it;
} else {
delete_descriptor(t);
+ return it;
}
}
+ return t;
}
@@ -1597,9 +1614,7 @@
rv->common.load = load;
}
- insert_desc_entry(rv);
-
- return rv;
+ return insert_desc_entry(rv);
}
LIBEXPORT void plugin_register_private_descriptor(
More information about the Bf-blender-cvs
mailing list