Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2011-06-30 18:04:51 +0400
committerCorinna Vinschen <corinna@vinschen.de>2011-06-30 18:04:51 +0400
commit3d938be6c5b64b33e21a1c182b60fa291215ca3e (patch)
tree5e2742d5ea8df887a8b47db5484a71f26a43f21e /winsup/cygwin
parent4b626add7e96e02b7ab75da54834406da20e4717 (diff)
* dtable.cc (fh_oom): Remove.
(fh_calloc): Remove. (cnew): Redefine to handle NULL returns from cmalloc. (build_fh_name): Accommodate new definition of cnew. Remove unneeded test for fh_oom. (fh_alloc): Ditto.
Diffstat (limited to 'winsup/cygwin')
-rw-r--r--winsup/cygwin/ChangeLog9
-rw-r--r--winsup/cygwin/dtable.cc82
2 files changed, 46 insertions, 45 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 7249f9d3d..0a71a4f0c 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,12 @@
+2011-06-30 Ryan Johnson <ryan.johnson@cs.utoronto.ca>
+
+ * dtable.cc (fh_oom): Remove.
+ (fh_calloc): Remove.
+ (cnew): Redefine to handle NULL returns from cmalloc.
+ (build_fh_name): Accommodate new definition of cnew. Remove unneeded
+ test for fh_oom.
+ (fh_alloc): Ditto.
+
2011-06-30 Corinna Vinschen <corinna@vinschen.de>
* fhandler_console.cc (fhandler_console::read): Add comment.
diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc
index cb61f064f..97dea39c5 100644
--- a/winsup/cygwin/dtable.cc
+++ b/winsup/cygwin/dtable.cc
@@ -393,17 +393,11 @@ dtable::init_std_file_from_handle (int fd, HANDLE handle)
}
}
-/* This is a workaround for the fact that the placement new operator
- always calls the constructor, even if the placement pointer is NULL. */
-static fhandler_union fh_oom;
-static void *
-fh_calloc (size_t size)
-{
- void *ret = ccalloc (HEAP_FHANDLER, 1, size);
- return ret ?: (void *) &fh_oom;
-}
-
-#define cnew(name) new (fh_calloc (sizeof (name))) name
+#define cnew(name, ...) \
+ ({ \
+ void* ptr = (void*) ccalloc (HEAP_FHANDLER, 1, sizeof (name)); \
+ ptr? new(ptr) name(__VA_ARGS__) : NULL; \
+ })
fhandler_base *
build_fh_name (const char *name, unsigned opt, suffix_info *si)
@@ -411,8 +405,8 @@ build_fh_name (const char *name, unsigned opt, suffix_info *si)
path_conv pc (name, opt | PC_NULLEMPTY | PC_POSIX, si);
if (pc.error)
{
- fhandler_base *fh = cnew (fhandler_nodevice) ();
- if (fh != (fhandler_base *) &fh_oom)
+ fhandler_base *fh = cnew (fhandler_nodevice);
+ if (fh)
fh->set_error (pc.error);
set_errno (fh ? pc.error : EMFILE);
return fh;
@@ -441,10 +435,10 @@ fh_alloc (device dev)
switch (dev.get_major ())
{
case DEV_TTYS_MAJOR:
- fh = cnew (fhandler_pty_slave) (dev.get_minor ());
+ fh = cnew (fhandler_pty_slave, dev.get_minor ());
break;
case DEV_CYGDRIVE_MAJOR:
- fh = cnew (fhandler_cygdrive) ();
+ fh = cnew (fhandler_cygdrive);
break;
case DEV_FLOPPY_MAJOR:
case DEV_CDROM_MAJOR:
@@ -456,16 +450,16 @@ fh_alloc (device dev)
case DEV_SD5_MAJOR:
case DEV_SD6_MAJOR:
case DEV_SD7_MAJOR:
- fh = cnew (fhandler_dev_floppy) ();
+ fh = cnew (fhandler_dev_floppy);
break;
case DEV_TAPE_MAJOR:
- fh = cnew (fhandler_dev_tape) ();
+ fh = cnew (fhandler_dev_tape);
break;
case DEV_SERIAL_MAJOR:
- fh = cnew (fhandler_serial) ();
+ fh = cnew (fhandler_serial);
break;
case DEV_CONS_MAJOR:
- fh = cnew (fhandler_console) (dev);
+ fh = cnew (fhandler_console, dev);
break;
default:
switch ((int) dev)
@@ -473,21 +467,21 @@ fh_alloc (device dev)
case FH_CONSOLE:
case FH_CONIN:
case FH_CONOUT:
- fh = cnew (fhandler_console) (dev);
+ fh = cnew (fhandler_console, dev);
break;
case FH_PTYM:
- fh = cnew (fhandler_pty_master) ();
+ fh = cnew (fhandler_pty_master);
break;
case FH_WINDOWS:
- fh = cnew (fhandler_windows) ();
+ fh = cnew (fhandler_windows);
break;
case FH_FIFO:
- fh = cnew (fhandler_fifo) ();
+ fh = cnew (fhandler_fifo);
break;
case FH_PIPE:
case FH_PIPER:
case FH_PIPEW:
- fh = cnew (fhandler_pipe) ();
+ fh = cnew (fhandler_pipe);
break;
case FH_TCP:
case FH_UDP:
@@ -495,72 +489,70 @@ fh_alloc (device dev)
case FH_UNIX:
case FH_STREAM:
case FH_DGRAM:
- fh = cnew (fhandler_socket) ();
+ fh = cnew (fhandler_socket);
break;
case FH_FS:
- fh = cnew (fhandler_disk_file) ();
+ fh = cnew (fhandler_disk_file);
break;
case FH_NULL:
- fh = cnew (fhandler_dev_null) ();
+ fh = cnew (fhandler_dev_null);
break;
case FH_ZERO:
case FH_FULL:
- fh = cnew (fhandler_dev_zero) ();
+ fh = cnew (fhandler_dev_zero);
break;
case FH_RANDOM:
case FH_URANDOM:
- fh = cnew (fhandler_dev_random) ();
+ fh = cnew (fhandler_dev_random);
break;
case FH_MEM:
case FH_PORT:
- fh = cnew (fhandler_dev_mem) ();
+ fh = cnew (fhandler_dev_mem);
break;
case FH_CLIPBOARD:
- fh = cnew (fhandler_dev_clipboard) ();
+ fh = cnew (fhandler_dev_clipboard);
break;
case FH_OSS_DSP:
- fh = cnew (fhandler_dev_dsp) ();
+ fh = cnew (fhandler_dev_dsp);
break;
case FH_PROC:
- fh = cnew (fhandler_proc) ();
+ fh = cnew (fhandler_proc);
break;
case FH_REGISTRY:
- fh = cnew (fhandler_registry) ();
+ fh = cnew (fhandler_registry);
break;
case FH_PROCESS:
case FH_PROCESSFD:
- fh = cnew (fhandler_process) ();
+ fh = cnew (fhandler_process);
break;
case FH_PROCNET:
- fh = cnew (fhandler_procnet) ();
+ fh = cnew (fhandler_procnet);
break;
case FH_PROCSYS:
- fh = cnew (fhandler_procsys) ();
+ fh = cnew (fhandler_procsys);
break;
case FH_PROCSYSVIPC:
- fh = cnew (fhandler_procsysvipc) ();
+ fh = cnew (fhandler_procsysvipc);
break;
case FH_NETDRIVE:
- fh = cnew (fhandler_netdrive) ();
+ fh = cnew (fhandler_netdrive);
break;
case FH_TTY:
{
if (iscons_dev (myself->ctty))
- fh = cnew (fhandler_console) (dev);
+ fh = cnew (fhandler_console, dev);
else
- fh = cnew (fhandler_pty_slave) (myself->ctty);
+ fh = cnew (fhandler_pty_slave, myself->ctty);
break;
}
case FH_KMSG:
- fh = cnew (fhandler_mailslot) ();
+ fh = cnew (fhandler_mailslot);
break;
}
}
if (fh == fh_unset)
- fh = cnew (fhandler_nodevice) ();
- if (fh == (fhandler_base *) &fh_oom)
- fh = NULL;
+ fh = cnew (fhandler_nodevice);
return fh;
}