MultiName-parsing error

Added by Daniel 654 days ago

Hi there!
I'm not able to create a new Bug-Ticket, so I'm posting this here.
There seems to be a problem with MultiName of kind Vector. Vector is not documented in the pdfs, but it can be found in the flexsdk at: http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/modules/swfutils/src/java/flash/swf/tools/AbcPrinter.java

This is the extracted MultiName-parser:

@void printMultiNameConstantPool() {
long n = readU32();
printOffset();
out.println(n + " MultiName Constant Pool Entries");
multiNameConstants = new MultiName[(n > 0) ? (int)n : 1];
multiNameConstants0 = new MultiName();
for (int i = 1; i < n; i++) {
printOffset();
byte b = abc[offset++];
multiNameConstants[i] = new MultiName();
multiNameConstants[i].kind = b;
switch (b) {
case 0x07: // QName
case 0x0D:
multiNameConstants[i].long1 = (int)readU32();
multiNameConstants[i].long2 = (int)readU32();
break;
case 0x0F: // RTQName
case 0x10:
multiNameConstants[i].long1 = (int)readU32();
break;
case 0x11: // RTQNameL
case 0x12:
break;
case 0x13: // NameL
case 0x14:
break;
case 0x09:
case 0x0E:
multiNameConstants[i].long1 = (int)readU32();
multiNameConstants[i].long2 = (int)readU32();
break;
case 0x1B:
case 0x1C:
multiNameConstants[i].long1 = (int)readU32();
break;
case 0x1D:
int nameIndex = (int)readU32();
MultiName mn = multiNameConstants[nameIndex];
int count = (int)readU32();
MultiName types[] = new MultiName[count];
for (int t = 0; t < count; t++) {
int typeIndex = (int)readU32();
types[t] = multiNameConstants[typeIndex];
}
multiNameConstants[i].typeName = mn;
multiNameConstants[i].types = types;
}
out.println(multiNameConstants[i]);
}
}@

Kind Regards,
Daniel


Replies

RE: MultiName-parsing error - Added by Robert 645 days ago

Thank you for this information. We have a look at it right now. :)