Replaced unsafe c string usage with std::string

This commit is contained in:
Robert Osfield
2016-06-28 15:52:35 +01:00
parent 4f276d9d8e
commit 26da8fc9ce
2 changed files with 40 additions and 41 deletions

View File

@@ -14,6 +14,7 @@
*/
#include <osgDB/FileUtils>
#include <osgDB/FileNameUtils>
#include <stdlib.h>
#include <stdio.h>
@@ -78,7 +79,7 @@ void trpgwArchive::Init(char *inDir,char *inFile,trpg2dPoint &sw, trpg2dPoint &n
majorVersion = majorVer;
minorVersion = minorVer;
fp = NULL;
strcpy(dir,inDir);
osgDB::stringcopyfixedsize(dir,inDir);
cpuNess = trpg_cpu_byte_order();
tileFile = NULL;
tileFileCount = 0;
@@ -288,19 +289,17 @@ bool trpgwArchive::isValid() const
{
if (!fp)
{
strcpy(errMess, "File object do not exist");
errMess.assign("File object do not exist");
return false;
}
return true;
}
const char *trpgwArchive::getErrMess() const
const char* trpgwArchive::getErrMess() const
{
if(errMess[0] == '\0')
return 0;
else
return &errMess[0];
if(errMess.empty()) return 0;
else return errMess.c_str();
}
// Set the maximum advised size for a tile file
@@ -460,7 +459,7 @@ bool trpgwArchive::CheckpointHeader()
if (!header.isValid())
{
if(header.getErrMess())
strcpy(errMess, header.getErrMess());
errMess.assign(header.getErrMess());
return false;
}
@@ -590,11 +589,11 @@ bool trpgwArchive::CheckpointHeader()
if(!header.GetIsMaster()||texTable.isValid()) {
if(!texTable.Write(buf))
{
strcpy(errMess, "Error writing texture table");
errMess.assign("Error writing texture table");
if(texTable.getErrMess())
{
strcat(errMess, ": ");
strcat(errMess, texTable.getErrMess());
errMess.append(": ");
errMess.append(texTable.getErrMess());
return false;
}
}
@@ -603,11 +602,11 @@ bool trpgwArchive::CheckpointHeader()
if(!header.GetIsMaster()) {
if (!matTable.Write(buf))
{
strcpy(errMess, "Error writing material table");
errMess.assign("Error writing material table");
if(matTable.getErrMess())
{
strcat(errMess, ": ");
strcat(errMess, matTable.getErrMess());
errMess.append(": ");
errMess.append(matTable.getErrMess());
return false;
}
}
@@ -615,11 +614,11 @@ bool trpgwArchive::CheckpointHeader()
if(!modelTable.Write(buf) )
{
strcpy(errMess, "Error writing model table");
errMess.assign("Error writing model table");
if(modelTable.getErrMess())
{
strcat(errMess, ": ");
strcat(errMess, modelTable.getErrMess());
errMess.append(": ");
errMess.append(modelTable.getErrMess());
return false;
}
}
@@ -627,62 +626,62 @@ bool trpgwArchive::CheckpointHeader()
//always write the tile table, even if we are a master
if(!tileTable.Write(buf))
{
strcpy(errMess, "Error writing tile table");
errMess.assign("Error writing tile table");
if(tileTable.getErrMess())
{
strcat(errMess, ": ");
strcat(errMess, tileTable.getErrMess());
errMess.append(": ");
errMess.append(tileTable.getErrMess());
return false;
}
}
if(!header.GetIsMaster()) {
if(!lightTable.Write(buf))
{
strcpy(errMess, "Error writing light table");
errMess.assign("Error writing light table");
if(lightTable.getErrMess())
{
strcat(errMess, ": ");
strcat(errMess, lightTable.getErrMess());
errMess.append(": ");
errMess.append(lightTable.getErrMess());
return false;
}
}
if(!rangeTable.Write(buf))
{
strcpy(errMess, "Error writing range table");
errMess.assign("Error writing range table");
if(rangeTable.getErrMess())
{
strcat(errMess, ": ");
strcat(errMess, rangeTable.getErrMess());
errMess.append(": ");
errMess.append(rangeTable.getErrMess());
return false;
}
}
if (!textStyleTable.Write(buf))
{
strcpy(errMess,"Error writing text style table");
errMess.assign("Error writing text style table");
if (textStyleTable.getErrMess())
{
strcat(errMess, ": ");
strcat(errMess, textStyleTable.getErrMess());
errMess.append(": ");
errMess.append(textStyleTable.getErrMess());
return false;
}
}
if (!supportStyleTable.Write(buf))
{
strcpy(errMess,"Error writing support style table");
errMess.assign("Error writing support style table");
if (supportStyleTable.getErrMess())
{
strcat(errMess, ": ");
strcat(errMess, supportStyleTable.getErrMess());
errMess.append(": ");
errMess.append(supportStyleTable.getErrMess());
return false;
}
}
if (!labelPropertyTable.Write(buf))
{
strcpy(errMess,"Error writing label property table");
errMess.assign("Error writing label property table");
if (labelPropertyTable.getErrMess())
{
strcat(errMess, ": ");
strcat(errMess, labelPropertyTable.getErrMess());
errMess.append(": ");
errMess.append(labelPropertyTable.getErrMess());
return false;
}
}
@@ -696,7 +695,7 @@ bool trpgwArchive::CheckpointHeader()
magic = trpg_byteswap_int(magic);
if (fwrite(&magic,sizeof(int32),1,fp) != 1)
{
strcpy(errMess, "Could not write the magic number");
errMess.assign("Could not write the magic number");
return false;
}
@@ -707,7 +706,7 @@ bool trpgwArchive::CheckpointHeader()
headerSize = trpg_byteswap_int(headerSize);
if (fwrite(&headerSize,1,sizeof(int32),fp) != sizeof(int32))
{
strcpy(errMess, "Could not write the header size");
errMess.assign("Could not write the header size");
return false;
}
@@ -716,7 +715,7 @@ bool trpgwArchive::CheckpointHeader()
if (WriteHeaderData(data,headLen,fp) != headLen)
{
strcpy(errMess, "Could not write the buffer");
errMess.assign("Could not write the buffer");
return false;
}
@@ -1381,7 +1380,7 @@ trpgwImageHelper::trpgwImageHelper(trpgEndian inNess,char *inDir,trpgTexTable &i
void trpgwImageHelper::Init(trpgEndian inNess,char *inDir,trpgTexTable &inTable,bool sepGeoTypical)
{
ness = inNess;
strcpy(dir,inDir);
osgDB::stringcopyfixedsize(dir,inDir);
texTable = &inTable;
texFile = NULL;
geotypFile = NULL;

View File

@@ -290,7 +290,7 @@ public:
// virtual bool WriteModel(unsigned int,trpgMemWriteBuffer &);
bool isValid(void) const;
const char *getErrMess() const;
const char* getErrMess() const;
char* getDir(void){return dir;};
virtual trpgwImageHelper* GetNewWImageHelper(trpgEndian ness,char *dir,trpgTexTable &);
virtual trpgwAppFile* GetNewWAppFile(trpgEndian inNess,const char *fileName,bool reuse=false);
@@ -353,7 +353,7 @@ protected:
bool firstHeaderWrite;
mutable char errMess[512];
mutable std::string errMess;
};
#endif