On Wed, Nov 28, 2012 at 02:08:01PM +0800, li guang wrote: > 在 2012-11-12一的 19:38 -0200,Eduardo Habkost写道: > > Doing error handling on a single place will make it easier to make sure > > memory is freed, and that error information is properly printed or > > returned to the caller. > > > > Signed-off-by: Eduardo Habkost <ehabk...@redhat.com> > > --- > > target-i386/cpu.c | 13 ++++++++----- > > 1 file changed, 8 insertions(+), 5 deletions(-) > > > > diff --git a/target-i386/cpu.c b/target-i386/cpu.c > > index 73b0fa1..69f1204 100644 > > --- a/target-i386/cpu.c > > +++ b/target-i386/cpu.c > > @@ -1506,17 +1506,20 @@ X86CPU *cpu_x86_init(const char *cpu_model) > > env->cpu_model_str = cpu_model; > > > > if (cpu_x86_register(cpu, cpu_model) < 0) { > > - object_delete(OBJECT(cpu)); > > - return NULL; > > + goto error; > > } > > > > x86_cpu_realize(OBJECT(cpu), &error); > > if (error) { > > - error_free(error); > > - object_delete(OBJECT(cpu)); > > - return NULL; > > + goto error; > > } > > return cpu; > > +error: > > seems we should not use lable 'error' as it's > the same name with variable 'error'
Do you know any compiler that complains about that? I don't find this to be a problem at all. > > hmm, maybe I should send a patch to clarify. > > > > + object_delete(OBJECT(cpu)); > > + if (error) { > > + error_free(error); > > + } > > + return NULL; > > } > > > > #if !defined(CONFIG_USER_ONLY) > > -- > regards! > li guang > linux kernel team at FNST, china > > thinking with brain but heart > living with heart but brain > -- Eduardo