Farid Zaripov wrote:
> Attached is a patch for stdlib library.
>
> ChangeLog:
> * _num_put.cc (__rw_iter_failed): Removed const to resolve
> ambiguity on MSVC 7.0
> * _select.h [_RWSTD_NO_CLASS_PARTIAL_SPEC]: Added __rw_is_same
> for compilers which not support the partial template specialization
This looks okay.
> * sstream.cc (basic_stringbuf<>::str): Added check before deallocate
> the old buffer
I'm wondering about this change. Does it fix a bug?
If there's a bug in the library we need an issue in Jira with a test
case that reproduces it. The fix for the bug should then be committed
separately from any other changes. We should also have a test that
exercises the bug. If no such test exists, we need to write one :)
If there is no bug, can you explain how the change is beneficial?
> * file.cpp: Declare fileno() only if it not declared in CRT header,
> but presend in libc
Okay.
> * exception.cpp [_MSC_VER]: #undefined _RWSTD_NO_VSNPRINTF after
> #define vsnprintf _vsnprintf
Okay.
> (__rw_free_what_buf): New function to free buffer for what message
This function should probably be inline for efficiency, don't you
think?
> (__rw_vfmtwhat): Used __rw_free_what_buf to free buffer
> (__rw_throw_exception [_RWSTD_NO_EXCEPTIONS]): Used __rw_free_what_buf
> to free buffer
Okay.
> (__rw_throw_exception [!_RWSTD_NO_EXCEPTIONS]): Don't free buffer
> before return from function
Doesn't this cause a memory leak?
FYI, I believe we have a problem here when a program sets up its own
exception function (__rw_throw_proc) and tries to delete the character
string that's passed to it by the library the delete will fail when
the string is in the thread local buffer. I think this causes the
example program rwexcept.cpp to crash on some platforms.
Does your change have anything to do with this? In any case, if
it fixes a bug we need to go through the process I outlined above.
> (__rw_throw): Used __rw_free_what_buf to free buffer
> (~__rw_exception): The same
This is okay too.
Thanks
Martin
|