On Tue, Nov 23, 2010 at 6:45 PM, Erik Faye-Lund <kusmabite@xxxxxxxxx> wrote: > On Tue, Nov 23, 2010 at 6:40 PM, Jonathan Nieder <jrnieder@xxxxxxxxx> wrote: >> Erik Faye-Lund wrote: >> >>> --- a/compat/msvc.c >>> +++ b/compat/msvc.c >>> @@ -7,16 +7,13 @@ DIR *opendir(const char *name) >>> { >>> int len; >>> DIR *p; >>> - p = (DIR*)malloc(sizeof(DIR)); >>> + p = xmalloc(sizeof(DIR)); >>> memset(p, 0, sizeof(DIR)); >>> strncpy(p->dd_name, name, PATH_MAX); >>> len = strlen(p->dd_name); >>> p->dd_name[len] = '/'; >>> p->dd_name[len+1] = '*'; >>> >>> - if (p == NULL) >>> - return NULL; >> >> A behavior change but maybe a good one. For example, the >> prune_packed_objects() loop currently skips object dirs it can't open, >> even if that is due to memory exhaustion, but this changes it to error >> out. >> >> What is the motivation? >> > > The motivation is just to avoid having to deal with the error, like we > do other places. It's not a big deal though. I could also set errno to > ENOMEM and return NULL if that's preferable. I just don't see how it > is. > > I also slightly dislike setting an error not listed in POSIX' > documentation of opendir, even though it's probably allowed. > Of course, I don't have to set errno; malloc would already have done that. All I need to do is move the check for NULL a bit earlier, so it won't segfault on ENOMEM. I'll change it for the next round. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html