{"thread":{"id":"2043","subject":"[PATCH] close clobbers mmap's errno in read_cache","startedAt":"2005-10-07T21:45:51Z","lastAt":"2005-10-07T23:50:11Z","messageCount":3,"participants":["Alex Riesen","Sven Verdoolaege"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"9812","messageId":"20051007214551.GA8893@steel.home","threadId":"2043","inReplyTo":null,"subject":"[PATCH] close clobbers mmap's errno in read_cache","fromName":"Alex Riesen","fromEmail":"raa.lkml@gmail.com","sentAt":"2005-10-07T21:45:51Z","receivedAt":"2005-10-07T21:45:51Z","isPatch":true,"sender":{"key":"raa.lkml@gmail.com","avatar":"https://avatars.githubusercontent.com/u/324101?v=4"},"body":"Save errno before close(fd) for strerror in die().\n\nSigned-off-by: Alex Riesen <raa.lkml@gmail.com>\n\n--- a/read-cache.c\t2005-10-03 09:16:31.000000000 +0200\n+++ b/read-cache.c\t2005-10-07 23:23:40.000000000 +0200\n@@ -482,9 +482,10 @@ int read_cache(void)\n \t\tif (size >= sizeof(struct cache_header) + 20)\n \t\t\tmap = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);\n \t}\n+\ti = errno;\n \tclose(fd);\n \tif (map == MAP_FAILED)\n-\t\tdie(\"index file mmap failed (%s)\", strerror(errno));\n+\t\tdie(\"index file mmap failed (%s)\", strerror(i));\n \n \thdr = map;\n \tif (verify_hdr(hdr, size) < 0)\n"},{"id":"9813","messageId":"20051007214845.GH8383MdfPADPa@greensroom.kotnet.org","threadId":"2043","inReplyTo":"20051007214551.GA8893@steel.home","subject":"Re: [PATCH] close clobbers mmap's errno in read_cache","fromName":"Sven Verdoolaege","fromEmail":"skimo@kotnet.org","sentAt":"2005-10-07T21:48:45Z","receivedAt":"2005-10-07T21:48:45Z","isPatch":true,"sender":{"key":"skimo@kotnet.org","avatar":null},"body":"On Fri, Oct 07, 2005 at 11:45:51PM +0200, Alex Riesen wrote:\n>  \t}\n> +\ti = errno;\n>  \tclose(fd);\n>  \tif (map == MAP_FAILED)\n> -\t\tdie(\"index file mmap failed (%s)\", strerror(errno));\n> +\t\tdie(\"index file mmap failed (%s)\", strerror(i));\n>  \n\nWhy don't you just move the close after the test ?\nThere's no point in closing if you're going to die.\n\nskimo\n"},{"id":"9824","messageId":"20051007235011.GA8189@steel.home","threadId":"2043","inReplyTo":"20051007214845.GH8383MdfPADPa@greensroom.kotnet.org","subject":"Re: [PATCH] close clobbers mmap's errno in read_cache","fromName":"Alex Riesen","fromEmail":"raa.lkml@gmail.com","sentAt":"2005-10-07T23:50:11Z","receivedAt":"2005-10-07T23:50:11Z","isPatch":true,"sender":{"key":"raa.lkml@gmail.com","avatar":"https://avatars.githubusercontent.com/u/324101?v=4"},"body":"Sven Verdoolaege, Fri, Oct 07, 2005 23:48:45 +0200:\n> On Fri, Oct 07, 2005 at 11:45:51PM +0200, Alex Riesen wrote:\n> >  \t}\n> > +\ti = errno;\n> >  \tclose(fd);\n> >  \tif (map == MAP_FAILED)\n> > -\t\tdie(\"index file mmap failed (%s)\", strerror(errno));\n> > +\t\tdie(\"index file mmap failed (%s)\", strerror(i));\n> >  \n> \n> Why don't you just move the close after the test ?\n\nI don't know.\n\n> There's no point in closing if you're going to die.\n> \n> skimo\n\nOf course you're right :) I'm just blind after eight.\n"}]}