[dasher] Fix out of range array assignment reported by by Bin Li in #587586.



commit 81d2c049304caa4a77845409ca5d0f1403d7abf6
Author: Patrick Welche <prlw1 cam ac uk>
Date:   Thu Jul 2 11:22:32 2009 +0100

    Fix out of range array assignment reported by by Bin Li in #587586.

 ChangeLog                                          |    5 +++++
 .../LanguageModelling/CTWLanguageModel.cpp         |    6 ++----
 2 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index e1a9c92..47f17bd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-07-02  Patrick Welche <prlw1 cam ac uk>
+
+	* CTWLanguageModel.cpp: Fix out of range array assignment reported
+	by by Bin Li in #587586.
+
 2009-07-01  Alan Lawrence <acl33 inf phy cam ac uk>
 
 	* Fix MacOSX project and add .gitignore for build / user files.
diff --git a/Src/DasherCore/LanguageModelling/CTWLanguageModel.cpp b/Src/DasherCore/LanguageModelling/CTWLanguageModel.cpp
index 479c370..7b2677f 100644
--- a/Src/DasherCore/LanguageModelling/CTWLanguageModel.cpp
+++ b/Src/DasherCore/LanguageModelling/CTWLanguageModel.cpp
@@ -434,13 +434,11 @@ void CCTWLanguageModel::GetProbs(Context context, std::vector<unsigned int> &Pro
 
 bool CCTWLanguageModel::WriteToFile(std::string strFilename, std::string AlphabetName){	
 	SLMFileHeader GenericHeader;
-	//GenericHeader.szMagic = "%DLF"; //char szMagic[5], Magic number ("%DLF" in ASCII)
-	// why doesn't the compiler like this? ugly work-around 
+	// Magic number ("%DLF" in ASCII)
 	GenericHeader.szMagic[0] = '%'; 
 	GenericHeader.szMagic[1] = 'D';
 	GenericHeader.szMagic[2] = 'L';
 	GenericHeader.szMagic[3] = 'F';
-	GenericHeader.szMagic[4] = '\0';
 
 	GenericHeader.iAlphabetSize = GetSize(); // Number of characters in the alphabet
 	GenericHeader.iHeaderVersion = 1; // Version of the header
@@ -501,7 +499,7 @@ bool CCTWLanguageModel::ReadFromFile(std::string strFilename, std::string Alphab
 		char * ReadAlphabetName;
 
 		fread(&GenericHeader.szMagic , sizeof(GenericHeader.szMagic[0]), sizeof(GenericHeader.szMagic), InputFile);
-		if(strcmp(GenericHeader.szMagic,"%DLF"))
+		if(memcmp(GenericHeader.szMagic,"%DLF",4))
 		{ // magic strings not equal			
 			return false; 
 		}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]