Dear Justin, thank you for your patch. Am Dienstag, den 29.01.2013, 18:26 -0800 schrieb Justin Maggard: > Commit 1e2b276535cea41c348292a019bdda8a58cb1679 Please not only add the hash, but also the summary, so people not having the Linus’ master checked out know what the original commit was about. Also CC the original commit author so s/he can comment. > broke homehost updating > functionality because it depended on each string comparison being done > even after we already found a match. Fix this by using a goto instead. > > --- > super0.c | 3 ++- > super1.c | 3 ++- > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/super0.c b/super0.c > index ecb6b38..f15f1e0 100644 > --- a/super0.c > +++ b/super0.c > @@ -554,10 +554,11 @@ static int update_super0(struct supertype *st, struct mdinfo *info, > } else if (strcmp(update, "homehost") == 0 && > homehost) { > uuid_set = 0; > - update = "uuid"; > info->uuid[0] = sb->set_uuid0; > info->uuid[1] = sb->set_uuid1; > + goto update_uuid; > } else if (strcmp(update, "uuid") == 0) { Would changing this from »else if …« to only »if« also solve this and make it subjectively more clear? > + update_uuid: > if (!uuid_set && homehost) { > char buf[20]; > char *hash = sha1_buffer(homehost, > diff --git a/super1.c b/super1.c > index 5bb1f01..fc31948 100644 > --- a/super1.c > +++ b/super1.c > @@ -987,14 +987,15 @@ static int update_super1(struct supertype *st, struct mdinfo *info, > } else if (strcmp(update, "homehost") == 0 && > homehost) { > char *c; > - update = "name"; > c = strchr(sb->set_name, ':'); > if (c) > strncpy(info->name, c+1, 31 - (c-sb->set_name)); > else > strncpy(info->name, sb->set_name, 32); > info->name[32] = 0; > + goto update_name; > } else if (strcmp(update, "name") == 0) { > + update_name: > if (info->name[0] == 0) > sprintf(info->name, "%d", info->array.md_minor); > memset(sb->set_name, 0, sizeof(sb->set_name)); Thanks, Paul
Attachment:
signature.asc
Description: This is a digitally signed message part