Buggy code:
; public int scanEntityValue ( int qchar , boolean createString ) throws Exception { } public boolean scanExpectedName ( char fastcheck , StringPool . CharArrayRange expectedName ) throws Exception { } public void scanQName ( char fastcheck , QName qname ) throws Exception { int offset = fCurrentOffset ; int ch = fMostRecentByte ; if ( ch < 128 ) { if ( ( XMLCharacterProperties . fgAsciiInitialNameChar [ ch ] ) == 0 ) { qname . clear ( ) ; return ; } if ( ch == ':' ) { qname . clear ( ) ; return ; } } else { if ( ! ( fCalledCharPropInit ) ) { XMLCharacterProperties . initCharFlags ( ) ; fCalledCharPropInit = true ; } ch = getMultiByteSymbolChar ( ch ) ; ( fCurrentIndex ) -- ; ( fCurrentOffset ) -- ; if ( ( ( XMLCharacterProperties . fgCharFlags [ ch ] ) & ( XMLCharacterProperties . E_InitialNameCharFlag ) ) == 0 ) { qname . clear ( ) ; return ; } } int index = fCurrentIndex ; byte [ ] data = fMostRecentData ; int prefixend = - 1 ; while ( true ) { ( fCharacterCounter ) ++ ; ( fCurrentOffset ) ++ ; index ++ ; try { ch = ( data [ index ] ) & 255 ; } catch ( ArrayIndexOutOfBoundsException ex ) { ch = slowLoadNextByte ( ) ; index = 0 ; data = fMostRecentData ; } if ( fastcheck == ch ) break ; if ( ch < 128 ) { if ( ( XMLCharacterProperties . fgAsciiNameChar [ ch ] ) == 0 ) break ; if ( ch == ':' ) { if ( prefixend != ( - 1 ) ) break ; prefixend = fCurrentOffset ; try { ch = ( data [ ( index + 1 ) ] ) & 255 ; } catch ( ArrayIndexOutOfBoundsException ex ) { UTF8DataChunk savedChunk = fCurrentChunk ; int savedOffset = fCurrentOffset ; ch = slowLoadNextByte ( ) ; fCurrentChunk = savedChunk ; fCurrentOffset = savedOffset ; fMostRecentData = fCurrentChunk . toByteArray ( ) ; } boolean lpok = true ; if ( ch < 128 ) { if ( ( ( XMLCharacterProperties . fgAsciiInitialNameChar [ ch ] ) == 0 ) || ( ch == ':' ) ) lpok = false ; } else { if ( ! ( fCalledCharPropInit ) ) { XMLCharacterProperties . initCharFlags ( ) ; fCalledCharPropInit = true ; } if ( ( ( XMLCharacterProperties . fgCharFlags [ ch ] ) & ( XMLCharacterProperties . E_InitialNameCharFlag ) ) == 0 ) lpok = false ; } ch = ':' ; if ( ! lpok ) { prefixend = - 1 ; break ; } } } else { if ( ! ( fCalledCharPropInit ) ) { XMLCharacterProperties . initCharFlags ( ) ; fCalledCharPropInit = true ; } fCurrentIndex = index ; fMostRecentByte = ch ; ch = getMultiByteSymbolChar ( ch ) ; ( fCurrentIndex ) -- ; ( fCurrentOffset ) -- ; index = fCurrentIndex ; if ( ( ( XMLCharacterProperties . fgCharFlags [ ch ] ) & ( XMLCharacterProperties . E_NameCharFlag ) ) == 0 ) break ; } } fCurrentIndex = index ; fMostRecentByte = ch ; int length = ( fCurrentOffset ) - offset ; qname . rawname = addSymbol ( offset , length ) ; qname . prefix = ( prefixend == ( - 1 ) ) ? - 1 : addSymbol ( offset , ( prefixend - offset ) ) ; qname . localpart = ( prefixend == ( - 1 ) ) ? qname . rawname : addSymbol ( ( prefixend + 1 ) , ( ( fCurrentOffset ) - ( prefixend + 1 ) ) ) ; <START_BUG> qname . uri = - 1 ; <END_BUG> } private int getMultiByteSymbolChar ( int b0 ) throws Exception { } public int scanName ( char fastcheck ) throws Exception { } private int scanMatchingName ( int ch , int b0 , int fastcheck ) throws Exception { } private int recognizeMarkup ( int b0 , QName element ) throws Exception { } private int recognizeReference ( int ch ) throws Exception { } public int scanContent ( QName element ) throws Exception { } private boolean copyMultiByteCharData ( int b0 ) throws Exception { } private boolean skipMultiByteCharData ( int b0 ) throws Exception { } private int copyAsciiCharData ( ) throws Exception { } private int skipAsciiCharData ( ) throws Exception { } private char [ ] fCharacters = new char [ UTF8DataChunk . CHUNK_SIZE ] ; private int fCharDataLength = 0 ; private void appendCharData ( int ch ) throws Exception { } private void slowAppendCharData ( int ch ) throws Exception { } private void characters ( int offset , int endOffset ) throws Exception { } private void whitespace ( int offset , int endOffset ) throws Exception { } private static final char [ ] cdata_string = new char [ ] { 'C' , 'D' , 'A' , 'T' , 'A' , '[' } ; private CharArrayRange fCharArrayRange = null ; private InputStream fInputStream = null ; private StringPool fStringPool = null ; private UTF8DataChunk fCurrentChunk = null ; private int fCurrentIndex = 0 ; private byte [ ] fMostRecentData = null ; private int fMostRecentByte = 0 ; private int fLength = 0 ; private boolean fCalledCharPropInit = false ; private boolean fCallClearPreviousChunk = true ; private int fillCurrentChunk ( ) throws Exception { } }

Fix:
qname . uri = StringPool . EMPTY_STRING ;