26 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
		
		
			
		
	
	
			26 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| 
								 | 
							
								diff --git a/src/linguist/shared/qm.cpp b/src/linguist/shared/qm.cpp
							 | 
						||
| 
								 | 
							
								index 8c3fc3f..d772855 100644
							 | 
						||
| 
								 | 
							
								--- a/src/linguist/shared/qm.cpp
							 | 
						||
| 
								 | 
							
								+++ b/src/linguist/shared/qm.cpp
							 | 
						||
| 
								 | 
							
								@@ -552,12 +552,17 @@ bool loadQM(Translator &translator, QIODevice &dev, ConversionData &cd)
							 | 
						||
| 
								 | 
							
								                 goto end;
							 | 
						||
| 
								 | 
							
								             case Tag_Translation: {
							 | 
						||
| 
								 | 
							
								                 int len = read32(m);
							 | 
						||
| 
								 | 
							
								-                if (len & 1) {
							 | 
						||
| 
								 | 
							
								+                m += 4;
							 | 
						||
| 
								 | 
							
								+
							 | 
						||
| 
								 | 
							
								+                // -1 indicates an empty string
							 | 
						||
| 
								 | 
							
								+                // Otherwise streaming format is UTF-16 -> 2 bytes per character
							 | 
						||
| 
								 | 
							
								+                if ((len != -1) && (len & 1)) {
							 | 
						||
| 
								 | 
							
								                     cd.appendError(QLatin1String("QM-Format error"));
							 | 
						||
| 
								 | 
							
								                     return false;
							 | 
						||
| 
								 | 
							
								                 }
							 | 
						||
| 
								 | 
							
								-                m += 4;
							 | 
						||
| 
								 | 
							
								-                QString str = QString((const QChar *)m, len/2);
							 | 
						||
| 
								 | 
							
								+                QString str;
							 | 
						||
| 
								 | 
							
								+                if (len != -1)
							 | 
						||
| 
								 | 
							
								+                    str = QString((const QChar *)m, len / 2);
							 | 
						||
| 
								 | 
							
								                 if (QSysInfo::ByteOrder == QSysInfo::LittleEndian) {
							 | 
						||
| 
								 | 
							
								                     for (int i = 0; i < str.length(); ++i)
							 | 
						||
| 
								 | 
							
								                         str[i] = QChar((str.at(i).unicode() >> 8) +
							 |