Closed
Bug 281593
Opened 20 years ago
Closed 17 years ago
MLK in StringBundleTest.cpp
Categories
(Core :: Internationalization, defect)
Tracking
()
RESOLVED
WORKSFORME
People
(Reporter: David.R.Gardiner, Assigned: David.R.Gardiner)
Details
(Keywords: memory-leak)
Attachments
(1 file)
|
1.00 KB,
patch
|
blizzard
:
review+
blizzard
:
superreview+
|
Details | Diff | Splinter Review |
Running StringBundleTest.exe in Purify gives the following memory leaks:
[W] MLK: Memory leak of 24 bytes from 1 block allocated in PR_Malloc [nspr4.dll]
Distribution of leaked blocks
24 bytes from 1 block of 24 bytes (0x0349cf60)
Allocation location
malloc [dbgheap.c:138]
_CRTIMP void * __cdecl malloc (
size_t nSize
)
=> {
void *res = _nh_malloc_dbg(nSize, _newmode, _NORMAL_BLOCK, NULL, 0);
RTCCALLBACK(_RTC_Allocate_hook, (res, nSize, 0));
PR_Malloc [prmem.c:477]
#if defined (WIN16)
return PR_MD_malloc( (size_t) size);
#else
=> return malloc(size);
#endif
}
NS_Alloc_P [nsmemoryimpl.cpp:367]
{
NS_ASSERTION(size, "NS_Alloc of size 0");
=> void* result = MALLOC1(size);
if (! result) {
// Request an asynchronous flush
sGlobalMemory.FlushMemory(NS_LITERAL_STRING("alloc-failure").get(), PR_FALSE);
nsMemory::Alloc(UINT) [nsmemory.h:68]
{
public:
static NS_HIDDEN_(void*) Alloc(size_t size)
=> { return NS_Alloc(size); }
static NS_HIDDEN_(void*) Realloc(void* ptr, PRSize size)
{ return NS_Realloc(ptr, size); }
?AllocateStringCopy@VnsAString@@G@@YAPAGABVnsAString@@PAG@Z
[nsreadableutils.cpp:310]
ToCharT*
AllocateStringCopy( const FromStringT& aSource, ToCharT* )
{
=> return NS_STATIC_CAST(ToCharT*, nsMemory::Alloc((aSource.Length()+1)
* sizeof(ToCharT)));
}
ToNewUnicode(nsAString const&) [nsreadableutils.cpp:369]
{
// no conversion needed, just allocate a buffer of the correct
length and copy into it
=> PRUnichar* result = AllocateStringCopy(aSource, (PRUnichar*)0);
nsAString::const_iterator fromBegin, fromEnd;
PRUnichar* toBegin = result;
nsStringBundle::GetStringFromID(int,WORD * *) [nsstringbundle.cpp:258]
rv = GetStringFromID(aID, tmpstr);
NS_ENSURE_SUCCESS(rv, rv);
=> *aResult = ToNewUnicode(tmpstr);
NS_ENSURE_TRUE(*aResult, NS_ERROR_OUT_OF_MEMORY);
return NS_OK;
main [stringbundletest.cpp:139]
char *value = nsnull;
// 123
=> ret = bundle->GetStringFromID(123, &ptrv);
if (NS_FAILED(ret)) {
printf("cannot get string from ID 123, ret=%d\n", ret);
return 1;
mainCRTStartup [crtexe.c:398]
mainret = wmain(argc, argv, envp);
#else /* WPRFLAG */
__initenv = envp;
=> mainret = main(argc, argv, envp);
#endif /* WPRFLAG */
#endif /* _WINMAIN_ */
[W] MLK: Memory leak of 12 bytes from 1 block allocated in PR_Malloc [nspr4.dll]
Distribution of leaked blocks
12 bytes from 1 block of 12 bytes (0x03518f58)
Allocation location
malloc [dbgheap.c:138]
_CRTIMP void * __cdecl malloc (
size_t nSize
)
=> {
void *res = _nh_malloc_dbg(nSize, _newmode, _NORMAL_BLOCK, NULL, 0);
RTCCALLBACK(_RTC_Allocate_hook, (res, nSize, 0));
PR_Malloc [prmem.c:477]
#if defined (WIN16)
return PR_MD_malloc( (size_t) size);
#else
=> return malloc(size);
#endif
}
NS_Alloc_P [nsmemoryimpl.cpp:367]
{
NS_ASSERTION(size, "NS_Alloc of size 0");
=> void* result = MALLOC1(size);
if (! result) {
// Request an asynchronous flush
sGlobalMemory.FlushMemory(NS_LITERAL_STRING("alloc-failure").get(), PR_FALSE);
nsMemory::Alloc(UINT) [nsmemory.h:68]
{
public:
static NS_HIDDEN_(void*) Alloc(size_t size)
=> { return NS_Alloc(size); }
static NS_HIDDEN_(void*) Realloc(void* ptr, PRSize size)
{ return NS_Realloc(ptr, size); }
?AllocateStringCopy@VnsAString@@D@@YAPADABVnsAString@@PAD@Z
[nsreadableutils.cpp:310]
ToCharT*
AllocateStringCopy( const FromStringT& aSource, ToCharT* )
{
=> return NS_STATIC_CAST(ToCharT*, nsMemory::Alloc((aSource.Length()+1)
* sizeof(ToCharT)));
}
ToNewCString(nsAString const&) [nsreadableutils.cpp:318]
char*
ToNewCString( const nsAString& aSource )
{
=> char* result = AllocateStringCopy(aSource, (char*)0);
nsAString::const_iterator fromBegin, fromEnd;
LossyConvertEncoding<PRUnichar, char> converter(result);
main [stringbundletest.cpp:145]
return 1;
}
v = ptrv;
=> value = ToNewCString(v);
printf("123=\"%s\"\n", value);
nsMemory::Free(ptrv);
mainCRTStartup [crtexe.c:398]
mainret = wmain(argc, argv, envp);
#else /* WPRFLAG */
__initenv = envp;
=> mainret = main(argc, argv, envp);
#endif /* WPRFLAG */
#endif /* _WINMAIN_ */
[W] MLK: Memory leak of 10 bytes from 1 block allocated in PR_Malloc [nspr4.dll]
Distribution of leaked blocks
10 bytes from 1 block of 10 bytes (0x033622f8)
Allocation location
malloc [dbgheap.c:138]
_CRTIMP void * __cdecl malloc (
size_t nSize
)
=> {
void *res = _nh_malloc_dbg(nSize, _newmode, _NORMAL_BLOCK, NULL, 0);
RTCCALLBACK(_RTC_Allocate_hook, (res, nSize, 0));
PR_Malloc [prmem.c:477]
#if defined (WIN16)
return PR_MD_malloc( (size_t) size);
#else
=> return malloc(size);
#endif
}
NS_Alloc_P [nsmemoryimpl.cpp:367]
{
NS_ASSERTION(size, "NS_Alloc of size 0");
=> void* result = MALLOC1(size);
if (! result) {
// Request an asynchronous flush
sGlobalMemory.FlushMemory(NS_LITERAL_STRING("alloc-failure").get(), PR_FALSE);
nsMemory::Alloc(UINT) [nsmemory.h:68]
{
public:
static NS_HIDDEN_(void*) Alloc(size_t size)
=> { return NS_Alloc(size); }
static NS_HIDDEN_(void*) Realloc(void* ptr, PRSize size)
{ return NS_Realloc(ptr, size); }
?AllocateStringCopy@VnsAString@@G@@YAPAGABVnsAString@@PAG@Z
[nsreadableutils.cpp:310]
ToCharT*
AllocateStringCopy( const FromStringT& aSource, ToCharT* )
{
=> return NS_STATIC_CAST(ToCharT*, nsMemory::Alloc((aSource.Length()+1)
* sizeof(ToCharT)));
}
ToNewUnicode(nsAString const&) [nsreadableutils.cpp:369]
{
// no conversion needed, just allocate a buffer of the correct
length and copy into it
=> PRUnichar* result = AllocateStringCopy(aSource, (PRUnichar*)0);
nsAString::const_iterator fromBegin, fromEnd;
PRUnichar* toBegin = result;
nsStringBundle::GetStringFromName(WORD const*,WORD * *)
[nsstringbundle.cpp:281]
rv = GetStringFromName(nsDependentString(aName), tmpstr);
NS_ENSURE_SUCCESS(rv, rv);
=> *aResult = ToNewUnicode(tmpstr);
NS_ENSURE_TRUE(*aResult, NS_ERROR_OUT_OF_MEMORY);
return NS_OK;
main [stringbundletest.cpp:152]
nsString strfile;
strfile.AssignLiteral("file");
const PRUnichar *ptrFile = strfile.get();
=> ret = bundle->GetStringFromName(ptrFile, &ptrv);
if (NS_FAILED(ret)) {
printf("cannot get string from name\n");
return 1;
mainCRTStartup [crtexe.c:398]
mainret = wmain(argc, argv, envp);
#else /* WPRFLAG */
__initenv = envp;
=> mainret = main(argc, argv, envp);
#endif /* WPRFLAG */
#endif /* _WINMAIN_ */
[W] MLK: Memory leak of 5 bytes from 1 block allocated in PR_Malloc [nspr4.dll]
Distribution of leaked blocks
5 bytes from 1 block of 5 bytes (0x034ed0a8)
Allocation location
malloc [dbgheap.c:138]
_CRTIMP void * __cdecl malloc (
size_t nSize
)
=> {
void *res = _nh_malloc_dbg(nSize, _newmode, _NORMAL_BLOCK, NULL, 0);
RTCCALLBACK(_RTC_Allocate_hook, (res, nSize, 0));
PR_Malloc [prmem.c:477]
#if defined (WIN16)
return PR_MD_malloc( (size_t) size);
#else
=> return malloc(size);
#endif
}
NS_Alloc_P [nsmemoryimpl.cpp:367]
{
NS_ASSERTION(size, "NS_Alloc of size 0");
=> void* result = MALLOC1(size);
if (! result) {
// Request an asynchronous flush
sGlobalMemory.FlushMemory(NS_LITERAL_STRING("alloc-failure").get(), PR_FALSE);
nsMemory::Alloc(UINT) [nsmemory.h:68]
{
public:
static NS_HIDDEN_(void*) Alloc(size_t size)
=> { return NS_Alloc(size); }
static NS_HIDDEN_(void*) Realloc(void* ptr, PRSize size)
{ return NS_Realloc(ptr, size); }
?AllocateStringCopy@VnsAString@@D@@YAPADABVnsAString@@PAD@Z
[nsreadableutils.cpp:310]
ToCharT*
AllocateStringCopy( const FromStringT& aSource, ToCharT* )
{
=> return NS_STATIC_CAST(ToCharT*, nsMemory::Alloc((aSource.Length()+1)
* sizeof(ToCharT)));
}
ToNewCString(nsAString const&) [nsreadableutils.cpp:318]
char*
ToNewCString( const nsAString& aSource )
{
=> char* result = AllocateStringCopy(aSource, (char*)0);
nsAString::const_iterator fromBegin, fromEnd;
LossyConvertEncoding<PRUnichar, char> converter(result);
main [stringbundletest.cpp:158]
ret = bundle->GetStringFromName(ptrFile, &ptrv);
if (NS_FAILED(ret)) {
printf("cannot get string from name\n");
=> return 1;
}
v = ptrv;
value = ToNewCString(v);
mainCRTStartup [crtexe.c:398]
mainret = wmain(argc, argv, envp);
#else /* WPRFLAG */
__initenv = envp;
=> mainret = main(argc, argv, envp);
#endif /* WPRFLAG */
#endif /* _WINMAIN_ */| Assignee | ||
Comment 1•20 years ago
|
||
Assignee: smontagu → david.gardiner
Status: NEW → ASSIGNED
Attachment #173822 -
Flags: review?(blizzard)
Updated•20 years ago
|
Attachment #173822 -
Flags: review?(blizzard) → review+
| Assignee | ||
Comment 2•20 years ago
|
||
Comment on attachment 173822 [details] [diff] [review] Fix memory leaks Are you able to sr this too, or should I ask someone else? -david
Attachment #173822 -
Flags: superreview?(blizzard)
Updated•20 years ago
|
Attachment #173822 -
Flags: superreview?(blizzard) → superreview+
Comment 3•17 years ago
|
||
StringBundleTest.cpp is no more. http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&module=all&branch=HEAD&branchtype=match&dir=&file=&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=explicit&mindate=2007-05-09+20%3A58&maxdate=2007-05-09+22%3A58&cvsroot=%2Fcvsroot Sorry this never got checked in. We have a weird convention that patch contributors without CVS access are supposed to find someone with CVS access to check in patches for them, and other patches get forgotten.
Status: ASSIGNED → RESOLVED
Closed: 17 years ago
Resolution: --- → WORKSFORME
You need to log in
before you can comment on or make changes to this bug.
Description
•