X-Git-Url: http://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/aa72d53735c595550e417882b9aa8d1473b9b57c..8afa7b7717a5a2f45182a63d043401960fdeef92:/src/upkg.c diff --git a/src/upkg.c b/src/upkg.c index 5a51c2e..176eca9 100644 --- a/src/upkg.c +++ b/src/upkg.c @@ -415,28 +415,13 @@ out: int package_export(GTypeModule *pkg) { struct upkg *upkg = U_PKG(pkg)->pkg; - const char *class, *package; GObject *obj; - GType type; int ret = 0; for (unsigned i = 0; i < upkg->export_count; i++) { - class = upkg_export_class(upkg, i, &package); - if (!class) { - fprintf(stderr, "error getting class information.\n"); - return -1; - } - - type = u_object_module_get_class(package, class); - if (!type) - continue; - - obj = g_object_new(type, NULL); - if (U_OBJECT_IS_EXPORTABLE(obj)) { - if (u_object_deserialize(obj, upkg, i) != 0 - || export(pkg, obj, i) != 0) { - ret = -1; - } + obj = u_object_new_from_package(upkg, i); + if (U_OBJECT_IS_EXPORTABLE(obj) && export(pkg, obj, i) != 0) { + ret = -1; } g_object_unref(obj); }