I have encountered a serious bug in the Nokia 6600 JVM, at least on my phone (firmware 3.42.1), that leaves the phone in a non-responsive state. To recover you need to take out the battery to turn the phone off and then on again.
I have not been able to find the bug described in the latest "Known Issues In The Nokia 6600 v1.3" pdf-file (http://www.forum.nokia.com/main/0,65...ml&fileID=5001).
I would like if anyone could try this out on their phone to see if it is just my phone or just this firmware. Just try a simple line like the following:
Image.createRGBImage(new int[64*64], 64, 64, true);
_____Full description:_____
(all references refer to the methods working on immutable semi-transparent images/data)
__Image.createRGBImage()__
When using the MIDP 2.0 api for creating an immutable, semi-transparent image from RGB data, if the pixel array is larger than about 4096, the phone will hang.
__Image.getRGB()__
When using the MIDP 2.0 api for grabing RGB data from an immutable, semi-transparent image, if the pixel size of the source image is larger than about 4096, the phone will hang.
__Graphics.drawRGB__
The bug is not seen here, even if using large semi-transparent data.
My guess is that what we see here is simply a buffer overflow in the JVM implementation.
Can anyone confirm this on their devices. On other Symbian 7.0 phones?
/appeal
_____Full example code:_____
// Create array with more data than needed
int[] data = new int[200*200];
// Create 100x100 non-alpha image. OK
Image.createRGBImage(data, 100, 100, false);
// Create 64x63 (4032 pixels) alpha image. OK
Image.createRGBImage(data, 64, 63, true);
// Create 64x64 (4096 pixels) alpha image. Phone hangs!
Image.createRGBImage(data, 64, 64, true);
// Create array with more data than needed
int[] rgb = new int[64*64];
Image image1 = Image.createImage("/64x63_alpha.png");
// Grabs 64x63 (4032 pixels) rgb from alpha image. OK
image2.getRGB(rgb, 0, 64, 0, 0, 64, 63);
Image image2 = Image.createImage("/64x64_alpha.png");
// Grabs 64x64 (4096 pixels) rgb from alpha image. Phone hangs!
image2.getRGB(rgb, 0, 64, 0, 0, 64, 64);

Reply With Quote

