X-Git-Url: http://git.draconx.ca/gitweb/upkg.git/blobdiff_plain/557eccb32013460418b72bb20acd79c018a5e95a..bb9c28745ae254b832805e5d41f2a5e6c3cb8f40:/src/uobject/uobject.c diff --git a/src/uobject/uobject.c b/src/uobject/uobject.c index b029cbf..581ac07 100644 --- a/src/uobject/uobject.c +++ b/src/uobject/uobject.c @@ -1,6 +1,6 @@ /* * upkg: tool for manipulating Unreal Tournament packages. - * Copyright (C) 2009 Nick Bowler + * Copyright © 2009-2011 Nick Bowler * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -141,9 +141,10 @@ decode_property(UObject *o, const char *name, struct upkg_file *f, unsigned long } /* Deserialize properties from an Unreal package. */ -static int deserialize(UObject *o, struct upkg_file *f) +static int deserialize(UObject *uo) { - struct u_object_priv *priv = U_OBJECT_GET_PRIV(o); + struct u_object_priv *priv = U_OBJECT_GET_PRIV(uo); + struct upkg_file *f = uo->pkg_file; unsigned long rc, tot_len = 0; while (1) { @@ -167,7 +168,7 @@ static int deserialize(UObject *o, struct upkg_file *f) return -1; len = rc; - name = upkg_get_name(f->pkg, tmp); + name = upkg_get_name(uo->pkg, tmp); if (!name) { return -1; } else if (strcmp(name, "None") == 0) { @@ -175,7 +176,7 @@ static int deserialize(UObject *o, struct upkg_file *f) break; } - rc = decode_property(U_OBJECT(o), name, f, len); + rc = decode_property(uo, name, f, len); if (rc == 0) return -1; len = rc; @@ -203,13 +204,13 @@ int u_object_deserialize(GObject *obj, struct upkg *pkg, unsigned long idx) return -1; } - rc = U_OBJECT_GET_CLASS(obj)->deserialize(uo, f); + uo->pkg = pkg; + uo->pkg_file = f; + + rc = U_OBJECT_GET_CLASS(obj)->deserialize(uo); if (rc != 0) { upkg_export_close(f); - } else { - uo->pkg = pkg; - uo->pkg_idx = idx; - uo->pkg_file = f; + uo->pkg_file = NULL; } return rc; @@ -219,7 +220,6 @@ static void u_object_init(UObject *o) { o->pkg = NULL; o->pkg_file = NULL; - o->pkg_idx = 0; } static void u_object_finalize(GObject *o)