X-Git-Url: http://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/96f81be8f602195ab40e2e1b33129e050dfe5c6a..687c74b6b8cc9eb6015c279a0c757ca3c0047697:/src/uobject/uobject.c diff --git a/src/uobject/uobject.c b/src/uobject/uobject.c index 627abe6..360dd31 100644 --- a/src/uobject/uobject.c +++ b/src/uobject/uobject.c @@ -529,6 +529,8 @@ GObject *u_object_new_from_package(GTypeModule *pkg, unsigned long idx) GType type; class = upkg_export_class(U_PKG(pkg)->pkg, idx, &package); + if (!class) + return NULL; type = u_object_module_get_class(package, class); if (type) { @@ -610,18 +612,20 @@ static char *prepend_fmt(const char *prefix, const char *fmt) /* Logging helpers that automatically prepend the UObject class information. */ void u_vlog_full(GObject *o, GLogLevelFlags level, const char *fmt, va_list ap) { - g_return_if_fail(IS_U_OBJECT(o)); - UObject *uo = U_OBJECT(o); - char *new_fmt = NULL; - - if (uo->pkg_name) { - new_fmt = prepend_fmt(uo->pkg_name, fmt); - if (!new_fmt) { - g_log(G_OBJECT_TYPE_NAME(o), level, "%s", - uo->pkg_file->name); - } else { + char *new_fmt = NULL, *obj_prefix = NULL; + + if (IS_U_OBJECT(o)) { + obj_prefix = U_OBJECT(o)->pkg_name; + } else if (G_IS_TYPE_MODULE(o)) { + obj_prefix = G_TYPE_MODULE(o)->name; + } + + if (obj_prefix) { + new_fmt = prepend_fmt(obj_prefix, fmt); + if (!new_fmt) + g_log(G_OBJECT_TYPE_NAME(o), level, "%s", obj_prefix); + else fmt = new_fmt; - } } g_logv(G_OBJECT_TYPE_NAME(o), level, fmt, ap);