GString.cpp line 2512 - "if(((W2>=0xDC00)||(W2<=0xDFFF))&&((U=(0x10000+((W1&0x3ff)<<10))|(W2&0x3ff))))"
Logical disjunction always evaluates to true: W2 >= 56320 || W2 <= 57343.
May be it bug.
And similar lines in GUnicode.cpp
line 555 - "if(((W2>=0xDC00)||(W2<=0xDFFF))"
line 592 - "if((C2MSB>=0xDC)||(C2MSB<=0xDF))"
line 630 - "if((C2MSB>=0xDC)||(C2MSB<=0xDF))"
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
And similar lines in GUnicode.cpp
line 555 - "if(((W2>=0xDC00)||(W2<=0xDFFF))"
line 592 - "if((C2MSB>=0xDC)||(C2MSB<=0xDF))"
line 630 - "if((C2MSB>=0xDC)||(C2MSB<=0xDF))"
Please submit this bug to djvu project since this file comes from that project.