Author: sebor Date: Fri Aug 8 16:14:30 2008 New Revision: 684138 URL: http://svn.apache.org/viewvc?rev=684138&view=rev Log: 2008-08-08 Martin Sebor <[EMAIL PROTECTED]>
STDCXX-998 * include/rw/_file.h (__rw_fopen, __rw_fdopen, __rw_fclose, __rw_fileno, __rw_fdmode, __rw_fmode, __rw_fread, __rw_fwrite, __rw_fseek, __rw_fflush): Declared with attribute nothrow. * include/ostream (__rw_fflush): Same. * src/mman.h (__rw_mmap, __rw_munmap): Same. * src/mman.cpp (__rw_mmap): Used malloc() instead of operator new to avoid exceptions. Modified: stdcxx/branches/4.2.x/include/ostream stdcxx/branches/4.2.x/include/rw/_file.h stdcxx/branches/4.2.x/src/mman.cpp stdcxx/branches/4.2.x/src/mman.h Modified: stdcxx/branches/4.2.x/include/ostream URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/ostream?rev=684138&r1=684137&r2=684138&view=diff ============================================================================== --- stdcxx/branches/4.2.x/include/ostream (original) +++ stdcxx/branches/4.2.x/include/ostream Fri Aug 8 16:14:30 2008 @@ -49,7 +49,7 @@ _RWSTD_NAMESPACE (__rw) { -_RWSTD_EXPORT int __rw_fflush (void*, int); +_RWSTD_EXPORT int __rw_fflush (void*, int) _RWSTD_ATTRIBUTE_NOTHROW; } // namespace __rw Modified: stdcxx/branches/4.2.x/include/rw/_file.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/include/rw/_file.h?rev=684138&r1=684137&r2=684138&view=diff ============================================================================== --- stdcxx/branches/4.2.x/include/rw/_file.h (original) +++ stdcxx/branches/4.2.x/include/rw/_file.h Fri Aug 8 16:14:30 2008 @@ -25,7 +25,7 @@ * implied. See the License for the specific language governing * permissions and limitations under the License. * - * Copyright 1994-2006 Rogue Wave Software. + * Copyright 1994-2006 Rogue Wave Software, Inc. * **************************************************************************/ @@ -39,21 +39,35 @@ _RWSTD_NAMESPACE (__rw) { -_RWSTD_EXPORT void* __rw_fopen (const char*, int, long); -_RWSTD_EXPORT void* __rw_fdopen (int); -_RWSTD_EXPORT int __rw_fclose (void*, int); -_RWSTD_EXPORT int __rw_fileno (void*, int); -_RWSTD_EXPORT int __rw_fdmode (int); -_RWSTD_EXPORT int __rw_fmode (void*, int); +_RWSTD_EXPORT void* +__rw_fopen (const char*, int, long) _RWSTD_ATTRIBUTE_NOTHROW; + +_RWSTD_EXPORT void* +__rw_fdopen (int) _RWSTD_ATTRIBUTE_NOTHROW; + +_RWSTD_EXPORT int +__rw_fclose (void*, int) _RWSTD_ATTRIBUTE_NOTHROW; + +_RWSTD_EXPORT int +__rw_fileno (void*, int) _RWSTD_ATTRIBUTE_NOTHROW; + +_RWSTD_EXPORT int +__rw_fdmode (int) _RWSTD_ATTRIBUTE_NOTHROW; + +_RWSTD_EXPORT int +__rw_fmode (void*, int) _RWSTD_ATTRIBUTE_NOTHROW; _RWSTD_EXPORT _RWSTD_SIZE_T -__rw_fread (void*, int, void*, _RWSTD_SIZE_T); +__rw_fread (void*, int, void*, _RWSTD_SIZE_T) _RWSTD_ATTRIBUTE_NOTHROW; _RWSTD_EXPORT _RWSTD_PTRDIFF_T -__rw_fwrite (void*, int, const void*, _RWSTD_SIZE_T); +__rw_fwrite (void*, int, const void*, _RWSTD_SIZE_T) _RWSTD_ATTRIBUTE_NOTHROW; + +_RWSTD_EXPORT long +__rw_fseek (void*, int, _RWSTD_PTRDIFF_T, int) _RWSTD_ATTRIBUTE_NOTHROW; -_RWSTD_EXPORT long __rw_fseek (void*, int, _RWSTD_PTRDIFF_T, int); -_RWSTD_EXPORT int __rw_fflush (void*, int); +_RWSTD_EXPORT int +__rw_fflush (void*, int) _RWSTD_ATTRIBUTE_NOTHROW; } // namespace __rw Modified: stdcxx/branches/4.2.x/src/mman.cpp URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/src/mman.cpp?rev=684138&r1=684137&r2=684138&view=diff ============================================================================== --- stdcxx/branches/4.2.x/src/mman.cpp (original) +++ stdcxx/branches/4.2.x/src/mman.cpp Fri Aug 8 16:14:30 2008 @@ -45,6 +45,7 @@ #include <sys/types.h> #include <fcntl.h> +#include <stdlib.h> _RWSTD_NAMESPACE (__rw) { @@ -53,7 +54,7 @@ // maps a named file into memory as shared, read-only, returns // the beginning address on success and fills `size' with the // size of the file; returns 0 on failure -void* __rw_mmap (const char* fname, _RWSTD_SIZE_T *size) +void* __rw_mmap (const char* fname, _RWSTD_SIZE_T *size) // nothrow { _RWSTD_ASSERT (0 != fname); _RWSTD_ASSERT (0 != size); @@ -130,12 +131,14 @@ // read() takes a size_t argument, convert off_t to it const size_t mapsize = size_t (sb.st_size); - void* data = operator new (mapsize); - const ssize_t nread = read (fd, data, mapsize); - - if (size_t (nread) != mapsize) { - operator delete (data); - data = 0; + void* data = malloc (mapsize); + if (data) { + const ssize_t nread = read (fd, data, mapsize); + + if (size_t (nread) != mapsize) { + free (data); + data = 0; + } } #endif // _MSC_VER @@ -144,7 +147,7 @@ } -void __rw_munmap (const void* pcv, _RWSTD_SIZE_T size) +void __rw_munmap (const void* pcv, _RWSTD_SIZE_T size) // nothrow { _RWSTD_ASSERT (pcv && size); Modified: stdcxx/branches/4.2.x/src/mman.h URL: http://svn.apache.org/viewvc/stdcxx/branches/4.2.x/src/mman.h?rev=684138&r1=684137&r2=684138&view=diff ============================================================================== --- stdcxx/branches/4.2.x/src/mman.h (original) +++ stdcxx/branches/4.2.x/src/mman.h Fri Aug 8 16:14:30 2008 @@ -22,7 +22,7 @@ * implied. See the License for the specific language governing * permissions and limitations under the License. * - * Copyright 2001-2006 Rogue Wave Software. + * Copyright 2001-2006 Rogue Wave Software, Inc. * **************************************************************************/ @@ -39,10 +39,10 @@ // maps a named file into memory as shared, read-only, returns // the beginning address on success and fills 'size' with the // size of the file; returns 0 on failure -void* __rw_mmap (const char*, _RWSTD_SIZE_T*); +void* __rw_mmap (const char*, _RWSTD_SIZE_T*) _RWSTD_ATTRIBUTE_NOTHROW; // unmaps a memory region -void __rw_munmap (const void*, _RWSTD_SIZE_T); +void __rw_munmap (const void*, _RWSTD_SIZE_T) _RWSTD_ATTRIBUTE_NOTHROW; } // namespace __rw