Fixes from Konstantin

git-svn-id: https://zxing.googlecode.com/svn/trunk@1377 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
srowen@gmail.com 2010-05-20 13:17:39 +00:00
parent a189e6c00c
commit 1fa644f157
2 changed files with 18 additions and 17 deletions

View file

@ -59,6 +59,8 @@ using namespace zxing;
if ([self.delegate respondsToSelector:@selector(decoder:didDecodeImage:usingSubset:withResult:)]) { if ([self.delegate respondsToSelector:@selector(decoder:didDecodeImage:usingSubset:withResult:)]) {
[self.delegate decoder:self didDecodeImage:self.image usingSubset:self.subsetImage withResult:result]; [self.delegate decoder:self didDecodeImage:self.image usingSubset:self.subsetImage withResult:result];
} }
[result release];
} }
- (void)failedToDecodeImage:(NSString *)reason { - (void)failedToDecodeImage:(NSString *)reason {
@ -185,8 +187,8 @@ using namespace zxing;
NSString *resultString = [NSString stringWithCString:cString NSString *resultString = [NSString stringWithCString:cString
encoding:NSUTF8StringEncoding]; encoding:NSUTF8StringEncoding];
decoderResult = [TwoDDecoderResult resultWithText:resultString decoderResult = [[TwoDDecoderResult resultWithText:resultString
points:points]; points:points] retain];
} catch (ReaderException &rex) { } catch (ReaderException &rex) {
NSLog(@"failed to decode, caught ReaderException '%s'", NSLog(@"failed to decode, caught ReaderException '%s'",
rex.what()); rex.what());
@ -210,7 +212,10 @@ using namespace zxing;
} }
} }
#endif #endif
free(subsetData);
self.subsetData = NULL;
if (decoderResult) { if (decoderResult) {
[self performSelectorOnMainThread:@selector(didDecodeImage:) [self performSelectorOnMainThread:@selector(didDecodeImage:)
withObject:decoderResult withObject:decoderResult
@ -220,9 +225,6 @@ using namespace zxing;
withObject:NSLocalizedString(@"Decoder BarcodeDetectionFailure", @"No barcode detected.") withObject:NSLocalizedString(@"Decoder BarcodeDetectionFailure", @"No barcode detected.")
waitUntilDone:NO]; waitUntilDone:NO];
} }
free(subsetData);
self.subsetData = NULL;
} }
[pool drain]; [pool drain];
#ifdef DEBUG #ifdef DEBUG
@ -236,7 +238,7 @@ using namespace zxing;
} }
- (void) decodeImage:(UIImage *)i { - (void) decodeImage:(UIImage *)i {
[self decodeImage:i cropRect:CGRectMake(0.0f, 0.0f, image.size.width, image.size.height)]; [self decodeImage:i cropRect:CGRectMake(0.0f, 0.0f, i.size.width, i.size.height)];
} }
- (void) decodeImage:(UIImage *)i cropRect:(CGRect)cr { - (void) decodeImage:(UIImage *)i cropRect:(CGRect)cr {

View file

@ -59,6 +59,8 @@ using namespace zxing;
if ([self.delegate respondsToSelector:@selector(decoder:didDecodeImage:usingSubset:withResult:)]) { if ([self.delegate respondsToSelector:@selector(decoder:didDecodeImage:usingSubset:withResult:)]) {
[self.delegate decoder:self didDecodeImage:self.image usingSubset:self.subsetImage withResult:result]; [self.delegate decoder:self didDecodeImage:self.image usingSubset:self.subsetImage withResult:result];
} }
[result release];
} }
- (void)failedToDecodeImage:(NSString *)reason { - (void)failedToDecodeImage:(NSString *)reason {
@ -132,9 +134,6 @@ using namespace zxing;
#endif #endif
self.subsetImage = [UIImage imageWithCGImage:subsetImageRef]; self.subsetImage = [UIImage imageWithCGImage:subsetImageRef];
// for debug purposes.
// UIImageWriteToSavedPhotosAlbum(self.subsetImage, nil, nil, nil);
CGImageRelease(subsetImageRef); CGImageRelease(subsetImageRef);
CGContextRelease(ctx); CGContextRelease(ctx);
@ -188,8 +187,8 @@ using namespace zxing;
NSString *resultString = [NSString stringWithCString:cString NSString *resultString = [NSString stringWithCString:cString
encoding:NSUTF8StringEncoding]; encoding:NSUTF8StringEncoding];
decoderResult = [TwoDDecoderResult resultWithText:resultString decoderResult = [[TwoDDecoderResult resultWithText:resultString
points:points]; points:points] retain];
} catch (ReaderException &rex) { } catch (ReaderException &rex) {
NSLog(@"failed to decode, caught ReaderException '%s'", NSLog(@"failed to decode, caught ReaderException '%s'",
rex.what()); rex.what());
@ -213,7 +212,10 @@ using namespace zxing;
} }
} }
#endif #endif
free(subsetData);
self.subsetData = NULL;
if (decoderResult) { if (decoderResult) {
[self performSelectorOnMainThread:@selector(didDecodeImage:) [self performSelectorOnMainThread:@selector(didDecodeImage:)
withObject:decoderResult withObject:decoderResult
@ -223,9 +225,6 @@ using namespace zxing;
withObject:NSLocalizedString(@"Decoder BarcodeDetectionFailure", @"No barcode detected.") withObject:NSLocalizedString(@"Decoder BarcodeDetectionFailure", @"No barcode detected.")
waitUntilDone:NO]; waitUntilDone:NO];
} }
free(subsetData);
self.subsetData = NULL;
} }
[pool drain]; [pool drain];
#ifdef DEBUG #ifdef DEBUG
@ -239,7 +238,7 @@ using namespace zxing;
} }
- (void) decodeImage:(UIImage *)i { - (void) decodeImage:(UIImage *)i {
[self decodeImage:i cropRect:CGRectMake(0.0f, 0.0f, image.size.width, image.size.height)]; [self decodeImage:i cropRect:CGRectMake(0.0f, 0.0f, i.size.width, i.size.height)];
} }
- (void) decodeImage:(UIImage *)i cropRect:(CGRect)cr { - (void) decodeImage:(UIImage *)i cropRect:(CGRect)cr {