-added another mutex release to fix a bug found from a segfault

-added a safer debug buffer output method
-added ability to specify precsion for floating point conversion
This commit is contained in:
Mark Vejvoda
2010-06-05 15:48:50 +00:00
parent 50ca413310
commit 1d0836f0ba
7 changed files with 155 additions and 16 deletions

View File

@@ -0,0 +1,37 @@
// ==============================================================
// This file is part of Glest Shared Library (www.glest.org)
//
// Copyright (C) 2001-2008 Martio Figueroa
//
// You can redistribute this code and/or modify it under
// the terms of the GNU General Public License as published
// by the Free Software Foundation; either version 2 of the
// License, or (at your option) any later version
// ==============================================================
#ifndef _SHARED_UTIL_CONVERSION_H_
#define _SHARED_UTIL_CONVERSION_H_
#include <string>
using std::string;
namespace Shared{ namespace Util{
bool strToBool(const string &s);
int strToInt(const string &s);
float strToFloat(const string &s);
bool strToBool(const string &s, bool *b);
bool strToInt(const string &s, int *i);
bool strToFloat(const string &s, float *f);
string boolToStr(bool b);
string intToStr(int i);
string intToHex(int i);
string floatToStr(float f,int precsion=2);
string doubleToStr(double f,int precsion=2);
}}//end namespace
#endif

View File

@@ -1,7 +1,7 @@
// ==============================================================
// This file is part of Glest Shared Library (www.glest.org)
//
// Copyright (C) 2001-2008 Marti<EFBFBD>o Figueroa
// Copyright (C) 2001-2008 Martio Figueroa
//
// You can redistribute this code and/or modify it under
// the terms of the GNU General Public License as published
@@ -116,15 +116,15 @@ string intToHex(int i){
return str;
}
string floatToStr(float f){
string floatToStr(float f,int precsion){
char str[strSize];
sprintf(str, "%.2f", f);
sprintf(str, "%.*f", precsion,f);
return str;
}
string doubleToStr(double d){
string doubleToStr(double d,int precsion){
char str[strSize];
sprintf(str, "%.2f", d);
sprintf(str, "%.*f", precsion,d);
return str;
}

View File

@@ -195,8 +195,9 @@ void SystemFlags::handleDebug(DebugType type, const char *fmt, ...) {
va_list argList;
va_start(argList, fmt);
char szBuf[4096]="";
vsprintf(szBuf,fmt, argList);
const int max_debug_buffer_size = 8096;
char szBuf[max_debug_buffer_size]="";
vsnprintf(szBuf,max_debug_buffer_size-1,fmt, argList);
// Either output to a logfile or
if(currentDebugLog.debugLogFileName != "") {