On Tue, 30 Jul 2013 13:00:40 +0200 Jan Kiszka <jan.kis...@siemens.com> wrote:
> Hi Igor, > > just noticed by chance that error handling in cpu_x86_create is likely > broken after your changes. Any error after cpu = ...object_new() will > not properly release the CPU object again nor report NULL to the caller. > That means errors should slip through, no? And cpu_x86_init looks similar. Failure of object_new() in cpu_x86_create() is not checked since it should never fail. As for following error handling caller of cpu_x86_create(..., errp) should use errp to check for errors and release failed cpu. cpu_x86_init() that calls it has: === out: if (error) { fprintf(stderr, "%s\n", error_get_pretty(error)); error_free(error); if (cpu != NULL) { object_unref(OBJECT(cpu)); === similar code-path exists in pc_new_cpu() end goal is to replace cpu_x86_create() with just object_new(FOO_CPU), but that needs to x86 CPU subclasses and properties in place so we could remove/isolate legacy stuff to legacy hook. Did you hit any particular problem with current code? > > Jan >