Re: valloc()?
Derek Price <[email protected]> Thu, 03 Mar 2005 16:22:45 -0500
| Newsgroups | gmane.comp.lib.gnulib.bugs,gmane.comp.version-control.cvs.bugs |
|---|---|
| Organization | Get CVS Support from Ximbiot <http://ximbiot.com>! |
| Message-ID | <[email protected]> |
Bruno Haible wrote: >Derek Price wrote: > > >>I've attached a patch to fix a few more nits >> >> > >Committed, with small wording tweaks in the comments. > > Thanks. >> - Note in the header that pagealign_alloc sets errno on failure. >> >> > >But it doesn't do so if malloc() fails on non-POSIX systems (like mingw >or so). I think one should set errno = ENOMEM if malloc() fails. > > How about the attached patch? >>I had two further thoughts on the naming of mmap-anon.m4. First, in my >>original decision to name it mmap.m4, I did take into consideration that >>there might be other mmap.m4 implementations but, ideally, I would hope >>that their requirements could be merged into this mmap(-anon).m4, at the >>least for simplicity's sake. >> >> > >I don't have this hope: The requirements of different programs regarding >mmap are so different that, if all tests were merged into a common mmap.m4 >file, some people would say "this test is insane - it disables mmap on >SVR4 [or Linux 1.2 or HP-UX or ...] although it is perfectly sane". >SVR4 had problems with PRIVATE READ-WRITE mappings of files. >Linux 1.2 didn't support MAP_SHARED on files. >HP-UX doesn't support mapping files at fixed addresses in most cases. > > Okay, this makes sense. >>Second, technically what we are currently >>calling gl_FUNC_MMAP_ANON calls AC_FUNC_MMAP, so it also verifies that >>private, fixed maps to files work as well, not just anonymous maps. >> >> > >Yes, this is one of the problems with AC_FUNC_MMAP. But fortunately we >can ignore it because nowadays most systems have a working mmap(), therefore >not many people will complain "it disables mmap() on my system". > > Ok. If it becomes an issue, CVS could currently get by with a call to AC_CHECK_FUNC([mmap]) here, assuming that there are not any systems that have mmaps which break for readonly, private, non-fixed maps. Of course, I've been meaning to move to writable mmaps soon, but that addition could be made with a separate call to AC_FUNC_MMAP. Regards, Derek _______________________________________________ bug-gnulib mailing list [email protected] http://lists.gnu.org/mailman/listinfo/bug-gnulib
pagealign_alloc-malloc-errno.diff
(text/plain, 953 B)
Index: lib/pagealign_alloc.c
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/pagealign_alloc.c,v
retrieving revision 1.4
diff -u -p -r1.4 pagealign_alloc.c
--- lib/pagealign_alloc.c 3 Mar 2005 20:38:38 -0000 1.4
+++ lib/pagealign_alloc.c 3 Mar 2005 21:13:29 -0000
@@ -147,9 +147,16 @@ pagealign_alloc (size_t size)
}
#else /* !HAVE_MMAP && !HAVE_POSIX_MEMALIGN */
size_t pagesize = getpagesize ();
- void *unaligned_ptr = malloc (size + pagesize - 1);
+ void *unaligned_ptr;
+ errno = 0;
+ unaligned_ptr = malloc (size + pagesize - 1);
if (unaligned_ptr == NULL)
- return NULL;
+ {
+ /* Failed malloc on some non-posix systems (e.g. mingw) fail to set
+ errno. */
+ if (!errno) errno = ENOMEM;
+ return NULL;
+ }
ret = (char *) unaligned_ptr
+ ((- (unsigned long) unaligned_ptr) & (pagesize - 1));
new_memnode (ret, unaligned_ptr);
signature.asc
(application/pgp-signature, 253 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (Cygwin) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org iD8DBQFCJ4AmLD1OTBfyMaQRArRrAJ455wMmmmKRO41vHbgFuwsiwMRcXACghP9e KCLChgKOaR+CLGYxN2DdKEk= =nUuO -----END PGP SIGNATURE-----