﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc
505	Memory leak in psMetadataAddItem	Paul Price	robert.desonia@…	"The following program leaks memory from psMetadataAddItem (presumably due to
replacing the MD item):

#include <stdio.h>
#include ""pslib.h""

int main(void)
{
    psMetadata *md = psMetadataAlloc();
    psMetadataAdd(md, PS_LIST_TAIL, ""answer"", PS_META_STR, ""The big answer"",
""Forty-two"");
    psMetadataItem *answerItem = psMetadataItemAlloc(""answer"", PS_META_STR, ""New
answer"", ""Three"");
    psMetadataAddItem(md, answerItem, PS_LIST_TAIL, PS_META_REPLACE);
    int answer = psMetadataLookupS32(NULL, md, ""answer"");
    printf(""Answer: %d\n"", answer);

    // Check
    psMemCheckCorruption(true);
    psFree(md);
    psMemBlock **leaks = NULL;          // List of leaks
    int nLeaks = psMemCheckLeaks(0, &leaks, NULL, false); // Number of leaks
    printf(""%d leaks found.\n"", nLeaks);
    for (int i = 0; i < nLeaks; i++) {
        printf(""Memory leak detection: memBlock %lld\n""
	       ""\tFile %s, line %d, size %d\n"",
	       leaks[i]->id, leaks[i]->file, leaks[i]->lineno, leaks[i]->userMemorySize);
    }
 
    // Pau.
}

price@mithrandir:/home/mithrandir/price/IP3/scripts/src/phase2>./test
2005:08:13 00:21:30Z|mithrandir          |W|psMetadataAddItem
    Metadata item answer has been replaced
Answer: 0
4 leaks found.
Memory leak detection: memBlock 18
        File psString.c, line 51, size 2048
Memory leak detection: memBlock 17
        File psMetadata.c, line 205, size 1024
Memory leak detection: memBlock 16
        File psString.c, line 33, size 16
Memory leak detection: memBlock 15
        File psMetadata.c, line 184, size 32


Also, the warning about replacement shouldn't be displayed --- it was the
programmer's intention to replace (PS_META_REPLACE)."	defect	closed	high		types	0.6.0	normal	invalid		
