This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hello, I don't know what the intention was in making malloc_allocator not throw anything but that makes it non-compliant, and also the user is not warned about any unsuccessful allocations, So I have added that check. Also, I have added another check in debug_allocator for checking whether a NULL pointer was passed. -- -Dhruv Matani. http://www.geocities.com/dhruvbird/ Proud to be a Vegetarian. http://www.vegetarianstarterkit.com/ http://www.vegkids.com/vegkids/index.html
Attachment:
ChangeLog
Description: Text document
diff -rNcp ./cvs_libstdc++-v3/.cvsignore ./modified_cvs_libstdc++/.cvsignore *** ./cvs_libstdc++-v3/.cvsignore 2004-02-06 04:49:53.000000000 +0530 --- ./modified_cvs_libstdc++/.cvsignore 1970-01-01 05:30:00.000000000 +0530 *************** *** 1 **** - autom4te.cache --- 0 ---- diff -rNcp ./cvs_libstdc++-v3/include/ext/debug_allocator.h ./modified_cvs_libstdc++/include/ext/debug_allocator.h *** ./cvs_libstdc++-v3/include/ext/debug_allocator.h 2004-02-04 23:07:10.000000000 +0530 --- ./modified_cvs_libstdc++/include/ext/debug_allocator.h 2004-03-05 16:11:00.000000000 +0530 *************** namespace __gnu_cxx *** 108,114 **** void deallocate(pointer __p, size_type __n) { ! pointer __real_p = __p - _M_extra; if (*reinterpret_cast<size_type*>(__real_p) != __n) abort(); _M_allocator.deallocate(__real_p, __n + _M_extra); --- 108,116 ---- void deallocate(pointer __p, size_type __n) { ! if (!__p) ! abort(); ! pointer __real_p = __p - _M_extra; if (*reinterpret_cast<size_type*>(__real_p) != __n) abort(); _M_allocator.deallocate(__real_p, __n + _M_extra); diff -rNcp ./cvs_libstdc++-v3/include/ext/malloc_allocator.h ./modified_cvs_libstdc++/include/ext/malloc_allocator.h *** ./cvs_libstdc++-v3/include/ext/malloc_allocator.h 2004-02-23 21:11:43.000000000 +0530 --- ./modified_cvs_libstdc++/include/ext/malloc_allocator.h 2004-03-05 16:07:29.000000000 +0530 *************** namespace __gnu_cxx *** 78,84 **** // about what the return value is when __n == 0. pointer allocate(size_type __n, const void* = 0) ! { return static_cast<_Tp*>(malloc(__n * sizeof(_Tp))); } // __p is not permitted to be a null pointer. void --- 78,89 ---- // about what the return value is when __n == 0. pointer allocate(size_type __n, const void* = 0) ! { ! pointer __ret = static_cast<_Tp*>(malloc(__n * sizeof(_Tp))); ! if (!__ret) ! throw std::bad_alloc(); ! return __ret; ! } // __p is not permitted to be a null pointer. void *************** namespace __gnu_cxx *** 93,99 **** // 402. wrong new expression in [some_] allocator::construct void construct(pointer __p, const _Tp& __val) ! { *__p = __val; } void destroy(pointer __p) { __p->~_Tp(); } --- 98,104 ---- // 402. wrong new expression in [some_] allocator::construct void construct(pointer __p, const _Tp& __val) ! { ::new(__p) value_type(__val); } void destroy(pointer __p) { __p->~_Tp(); }
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |