diff -up aplus-fsf-4.22/src/MSTypes/MSFloat.C.gcc44 aplus-fsf-4.22/src/MSTypes/MSFloat.C --- aplus-fsf-4.22/src/MSTypes/MSFloat.C.gcc44 2008-03-27 20:10:29.000000000 +0100 +++ aplus-fsf-4.22/src/MSTypes/MSFloat.C 2009-03-10 21:07:07.000000000 +0100 @@ -112,6 +112,8 @@ const MSSymbol& MSFloat::symbol(void) MSError::ErrorStatus MSFloat::internalSet(const char *pString_) { char *np,buf[512]; + + char *xp = const_cast<char *>(pString_); _real=0.0; _flags=MSFloat::Set; // clear the Valid bit, i.e. isValid==MSFalse @@ -120,15 +122,15 @@ MSError::ErrorStatus MSFloat::internalSe { _real=0.0; setToValid(); return (MSError::MSSuccess); } else if (strncmp(pString_,"NaN",3)==0) { _real=0.0; return (MSError::MSSuccess); } - else if ((np=strchr(pString_,'.'))&&(strchr(++np,'.'))) + else if ((np=strchr(xp,'.'))&&(strchr(++np,'.'))) { return (MSError::BadReal); } // Disallow more than one decimal point - else if ((np=strchr(pString_,'.'))&&(strchr(++np,','))) + else if ((np=strchr(xp,'.'))&&(strchr(++np,','))) { return (MSError::BadReal); } // Disallow commas after the decimal point else if (*pString_==',') { return (MSError::BadReal); } // Disallow leading commas // Make sure we don't save too many characters after the decimal - char *decimal=strchr(pString_,'.'); + char *decimal=strchr(xp,'.'); if ((decimal!=0)&&(strlen(decimal+1)>MSRealMaximumLength)) { return (MSError::IntTooBig); } strcpy(buf,pString_); diff -up aplus-fsf-4.22/src/MSTypes/MSUtil.C.gcc44 aplus-fsf-4.22/src/MSTypes/MSUtil.C --- aplus-fsf-4.22/src/MSTypes/MSUtil.C.gcc44 2008-03-27 20:10:34.000000000 +0100 +++ aplus-fsf-4.22/src/MSTypes/MSUtil.C 2009-03-10 21:08:17.000000000 +0100 @@ -26,8 +26,10 @@ void MSUtil::comma(const char *fromBuffe { int places,len,i,j; char *cp; + + char *xp = const_cast<char *>(fromBuffer_); - if ((cp=strchr(fromBuffer_,'.'))!=NULL) + if ((cp=strchr(xp,'.'))!=NULL) { places=cp-fromBuffer_; for (i=0,j=0,len=strlen(fromBuffer_); j<=len&&i<(size_-1); j++,i++)