diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-11-03 13:02:31 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-11-03 13:02:31 +0000 |
commit | 4dbeffdd45e8c8f21d626e498b0e6971b76132fa (patch) | |
tree | a020ff768421c953e5bd2b4e1510e37561a296de /misc/uClibc++/libxx | |
parent | 8e7c3d9a4676c5ec1b6b3e9f243af474420ea9fb (diff) | |
download | nuttx-4dbeffdd45e8c8f21d626e498b0e6971b76132fa.tar.gz nuttx-4dbeffdd45e8c8f21d626e498b0e6971b76132fa.tar.bz2 nuttx-4dbeffdd45e8c8f21d626e498b0e6971b76132fa.zip |
uClibc++ updates
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5302 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'misc/uClibc++/libxx')
-rw-r--r-- | misc/uClibc++/libxx/uClibc++/new_opv.cxx | 77 |
1 files changed, 48 insertions, 29 deletions
diff --git a/misc/uClibc++/libxx/uClibc++/new_opv.cxx b/misc/uClibc++/libxx/uClibc++/new_opv.cxx index ef416e07b..312d5adb3 100644 --- a/misc/uClibc++/libxx/uClibc++/new_opv.cxx +++ b/misc/uClibc++/libxx/uClibc++/new_opv.cxx @@ -1,35 +1,54 @@ -/* Copyright (C) 2004 Garrett A. Kajmowicz +/* Copyright (C) 2004 Garrett A. Kajmowicz + * + * This file is part of the uClibc++ Library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ - This file is part of the uClibc++ Library. +#include <new> +#include <cstdlib> - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. +#include <basic_definitions> - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. +#ifdef CONFIG_UCLIBCXX_EXCEPTION +# include <func_exception> +#else +# include <exception> +#endif - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ +_UCXXEXPORT void *operator new[](std::size_t numBytes) throw(std::bad_alloc) +{ + // C++ stardard 5.3.4.8 requires that a valid pointer be returned for + // a call to new(0). Thus: -#include <new> -#include <cstdlib> -#include <func_exception> - -_UCXXEXPORT void* operator new[](std::size_t numBytes) throw(std::bad_alloc){ - //C++ stardard 5.3.4.8 requires that a valid pointer be returned for - //a call to new(0). Thus: - if(numBytes == 0){ - numBytes = 1; - } - void * p = malloc(numBytes); - if(p == 0){ - std::__throw_bad_alloc(); - } - return p; + if (numBytes == 0) + { + numBytes = 1; + } + + // Allocate the memory + + void *p = malloc(numBytes); + if (p == 0) + { +#ifdef CONFIG_UCLIBCXX_EXCEPTION + std::__throw_bad_alloc(); +#else + std::terminate(); +#endif + } + + return p; } |