Hello,
we found a Leak in a DataAbstract component.
for (DADataTable *table in aDataTables)
{
DADelta *delta = [[[DADelta alloc] init] autorelease];
[rda.dataStreamer readDelta:delta forTable:table];
if ([delta hasErrors])
{
hasErrors = YES;
[errors addObjectsFromArray:[delta errors]];
errorMessages = [errorMessages stringByAppendingString:[delta errorMessages]];
for (DADeltaChange *change in [delta errors])
[self remoteDataAdapter:rda didFailToApplyChange:change forTable:table];//_MC
}
NSString *entityid = [(TSyncObjectRec*)[objects objectAtIndex:i] idEntityTypeID];
[self serverAnswerDelta:delta forEntity:entityid];//_MC
[table processDelta:delta andMergeChanges:YES];
progress += progress_step;//_MC
i++;
}
[rda.dataStreamer finalizeStreamer];
The leak happens in “[rda.dataStreamer readDelta:delta forTable:table];”
The deepest instruction is:
- (void)readUtf8String:(NSString **)value
{
int32 strlength = [self readInt32];
if (strlength > [data length] - position) {
[ROBinHelpers unexpectedStringLength];
}
*value = [[[NSString alloc] initWithBytes:bytes+position length:strlength encoding:NSUTF8StringEncoding] autorelease];
[self advancePositionBy:strlength];
}
Where the Leak is in “*value = …”
Is there something wrong in my code or yours?
Kind regards
Stephan