Commit a8e2b236 authored by hybrid's avatar hybrid

Fix memory corruption due to char/wchar_t casts.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2156 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 84cb5dd9
...@@ -102,9 +102,10 @@ struct GameData ...@@ -102,9 +102,10 @@ struct GameData
struct Q3Player : public IAnimationEndCallBack struct Q3Player : public IAnimationEndCallBack
{ {
Q3Player () Q3Player ()
: WeaponNode ( 0 ), StartPositionCurrent ( 0 ), Mesh ( 0 ), Device ( 0 ) : Device(0), MapParent(0), Mesh(0), WeaponNode(0), StartPositionCurrent(0)
{ {
animation[0] = 0; animation[0] = 0;
memset(Anim, 0, sizeof(TimeFire)*4);
} }
void create ( IrrlichtDevice *device, void create ( IrrlichtDevice *device,
...@@ -123,12 +124,10 @@ struct Q3Player : public IAnimationEndCallBack ...@@ -123,12 +124,10 @@ struct Q3Player : public IAnimationEndCallBack
ISceneNode* MapParent; ISceneNode* MapParent;
IQ3LevelMesh* Mesh; IQ3LevelMesh* Mesh;
IAnimatedMeshSceneNode* WeaponNode; IAnimatedMeshSceneNode* WeaponNode;
c8 animation[64];
s32 StartPositionCurrent; s32 StartPositionCurrent;
c8 buf[64];
TimeFire Anim[4]; TimeFire Anim[4];
c8 animation[64];
c8 buf[64];
}; };
...@@ -343,27 +342,27 @@ struct GUI ...@@ -343,27 +342,27 @@ struct GUI
IGUICheckBox* FullScreen; IGUICheckBox* FullScreen;
IGUICheckBox* Bit32; IGUICheckBox* Bit32;
IGUIScrollBar* MultiSample; IGUIScrollBar* MultiSample;
IGUIButton *SetVideoMode; IGUIButton* SetVideoMode;
IGUIScrollBar* Tesselation; IGUIScrollBar* Tesselation;
IGUIScrollBar* Gamma; IGUIScrollBar* Gamma;
IGUICheckBox* Collision; IGUICheckBox* Collision;
IGUICheckBox * Visible_Map; IGUICheckBox* Visible_Map;
IGUICheckBox * Visible_Shader; IGUICheckBox* Visible_Shader;
IGUICheckBox * Visible_Fog; IGUICheckBox* Visible_Fog;
IGUICheckBox * Visible_Unresolved; IGUICheckBox* Visible_Unresolved;
IGUIButton * Respawn; IGUIButton* Respawn;
IGUITable* ArchiveList; IGUITable* ArchiveList;
IGUIButton* ArchiveAdd; IGUIButton* ArchiveAdd;
IGUIButton* ArchiveRemove; IGUIButton* ArchiveRemove;
IGUIFileOpenDialog* ArchiveFileOpen; IGUIFileOpenDialog* ArchiveFileOpen;
IGUIListBox *MapList; IGUIListBox* MapList;
IGUITreeView* SceneTree; IGUITreeView* SceneTree;
IGUIStaticText* StatusLine; IGUIStaticText* StatusLine;
IGUIImage * Logo; IGUIImage* Logo;
IGUIWindow * Window; IGUIWindow* Window;
}; };
...@@ -410,7 +409,6 @@ private: ...@@ -410,7 +409,6 @@ private:
Q3Player Player[2]; Q3Player Player[2];
struct SParticleImpact struct SParticleImpact
{ {
u32 when; u32 when;
...@@ -431,19 +429,10 @@ private: ...@@ -431,19 +429,10 @@ private:
/*! /*!
*/ */
CQuake3EventHandler::CQuake3EventHandler( GameData *game ) CQuake3EventHandler::CQuake3EventHandler( GameData *game )
: Game ( game ) : Game(game), Mesh(0), MapParent(0), ShaderParent(0), ItemParent(0), UnresolvedParent(0),
BulletParent(0), FogParent(0), SkyNode(0), Meta(0)
{ {
MapParent = 0; buf[0]=0;
ShaderParent = 0;
ItemParent = 0;
UnresolvedParent = 0;
FogParent = 0;
BulletParent = 0;
Meta = 0;
Mesh = 0;
SkyNode = 0;
//! Also use 16 Bit Textures for 16 Bit RenderDevice //! Also use 16 Bit Textures for 16 Bit RenderDevice
if ( Game->deviceParam.Bits == 16 ) if ( Game->deviceParam.Bits == 16 )
{ {
...@@ -481,8 +470,8 @@ void CQuake3EventHandler::createTextures () ...@@ -481,8 +470,8 @@ void CQuake3EventHandler::createTextures ()
video::ITexture* texture; video::ITexture* texture;
video::IImage* image; video::IImage* image;
u32 i; u32 i;
s32 x; u32 x;
s32 y; u32 y;
u32 * data; u32 * data;
for ( i = 0; i != 8; ++i ) for ( i = 0; i != 8; ++i )
{ {
...@@ -531,7 +520,6 @@ void CQuake3EventHandler::CreateGUI() ...@@ -531,7 +520,6 @@ void CQuake3EventHandler::CreateGUI()
{ {
IGUIEnvironment *env = Game->Device->getGUIEnvironment(); IGUIEnvironment *env = Game->Device->getGUIEnvironment();
ISceneManager *smgr = Game->Device->getSceneManager ();
IVideoDriver * driver = Game->Device->getVideoDriver(); IVideoDriver * driver = Game->Device->getVideoDriver();
gui.drop(); gui.drop();
...@@ -746,7 +734,7 @@ void CQuake3EventHandler::AddArchive ( const core::string<c16>& archiveName ) ...@@ -746,7 +734,7 @@ void CQuake3EventHandler::AddArchive ( const core::string<c16>& archiveName )
{ {
io::IFileArchive * archive = fs->getFileArchive ( i ); io::IFileArchive * archive = fs->getFileArchive ( i );
u32 index = gui.ArchiveList->addRow ( -1 ); u32 index = gui.ArchiveList->addRow(0xffffffff);
gui.ArchiveList->setCellText ( index, 0, archive->getArchiveType () ); gui.ArchiveList->setCellText ( index, 0, archive->getArchiveType () );
gui.ArchiveList->setCellText ( index, 1, archive->getArchiveName () ); gui.ArchiveList->setCellText ( index, 1, archive->getArchiveName () );
...@@ -761,15 +749,14 @@ void CQuake3EventHandler::AddArchive ( const core::string<c16>& archiveName ) ...@@ -761,15 +749,14 @@ void CQuake3EventHandler::AddArchive ( const core::string<c16>& archiveName )
{ {
gui.MapList->clear (); gui.MapList->clear ();
IGUISpriteBank *bank = Game->Device->getGUIEnvironment()->getSpriteBank ( "sprite_q3map" ); IGUISpriteBank *bank = Game->Device->getGUIEnvironment()->getSpriteBank("sprite_q3map");
if ( 0 == bank ) if ( 0 == bank )
bank = Game->Device->getGUIEnvironment()->addEmptySpriteBank ( "sprite_q3map" ); bank = Game->Device->getGUIEnvironment()->addEmptySpriteBank("sprite_q3map");
SGUISprite sprite; SGUISprite sprite;
SGUISpriteFrame frame; SGUISpriteFrame frame;
core::rect<s32> r; core::rect<s32> r;
bank->getSprites().clear(); bank->getSprites().clear();
bank->getPositions().clear (); bank->getPositions().clear ();
gui.MapList->setSpriteBank ( bank ); gui.MapList->setSpriteBank ( bank );
...@@ -783,7 +770,6 @@ void CQuake3EventHandler::AddArchive ( const core::string<c16>& archiveName ) ...@@ -783,7 +770,6 @@ void CQuake3EventHandler::AddArchive ( const core::string<c16>& archiveName )
io::IFileList *fileList = fs->createFileList (); io::IFileList *fileList = fs->createFileList ();
fs->setFileListSystem ( io::FILESYSTEM_NATIVE ); fs->setFileListSystem ( io::FILESYSTEM_NATIVE );
for ( i=0; i< fileList->getFileCount(); ++i) for ( i=0; i< fileList->getFileCount(); ++i)
{ {
s = fileList->getFullFileName(i); s = fileList->getFullFileName(i);
...@@ -924,8 +910,6 @@ void CQuake3EventHandler::LoadMap ( const stringw &mapName, s32 collision ) ...@@ -924,8 +910,6 @@ void CQuake3EventHandler::LoadMap ( const stringw &mapName, s32 collision )
Game->CurrentMapName = mapName; Game->CurrentMapName = mapName;
IMeshBuffer *b0 = geometry->getMeshBuffer(0);
//create a collision list //create a collision list
Meta = 0; Meta = 0;
...@@ -933,6 +917,7 @@ void CQuake3EventHandler::LoadMap ( const stringw &mapName, s32 collision ) ...@@ -933,6 +917,7 @@ void CQuake3EventHandler::LoadMap ( const stringw &mapName, s32 collision )
if (collision) if (collision)
Meta = smgr->createMetaTriangleSelector(); Meta = smgr->createMetaTriangleSelector();
//IMeshBuffer *b0 = geometry->getMeshBuffer(0);
//s32 minimalNodes = b0 ? core::s32_max ( 2048, b0->getVertexCount() / 32 ) : 2048; //s32 minimalNodes = b0 ? core::s32_max ( 2048, b0->getVertexCount() / 32 ) : 2048;
s32 minimalNodes = 2048; s32 minimalNodes = 2048;
...@@ -997,7 +982,7 @@ void CQuake3EventHandler::LoadMap ( const stringw &mapName, s32 collision ) ...@@ -997,7 +982,7 @@ void CQuake3EventHandler::LoadMap ( const stringw &mapName, s32 collision )
void CQuake3EventHandler::addSceneTreeItem( ISceneNode * parent, IGUITreeViewNode* nodeParent) void CQuake3EventHandler::addSceneTreeItem( ISceneNode * parent, IGUITreeViewNode* nodeParent)
{ {
IGUITreeViewNode* node; IGUITreeViewNode* node;
wchar_t *msg = (wchar_t*) buf; wchar_t msg[128];
s32 imageIndex; s32 imageIndex;
list<ISceneNode*>::ConstIterator it = parent->getChildren().begin(); list<ISceneNode*>::ConstIterator it = parent->getChildren().begin();
...@@ -1777,7 +1762,6 @@ void CQuake3EventHandler::Animate() ...@@ -1777,7 +1762,6 @@ void CQuake3EventHandler::Animate()
{ {
u32 now = Game->Device->getTimer()->getTime(); u32 now = Game->Device->getTimer()->getTime();
Q3Player * player = Player + 0; Q3Player * player = Player + 0;
checkTimeFire ( player->Anim, 4, now ); checkTimeFire ( player->Anim, 4, now );
...@@ -1786,7 +1770,7 @@ void CQuake3EventHandler::Animate() ...@@ -1786,7 +1770,7 @@ void CQuake3EventHandler::Animate()
if ( player->Anim[0].flags & FIRED ) if ( player->Anim[0].flags & FIRED )
{ {
ISceneManager *smgr = Game->Device->getSceneManager (); ISceneManager *smgr = Game->Device->getSceneManager ();
wchar_t *msg = (wchar_t*) buf; wchar_t msg[128];
IVideoDriver * driver = Game->Device->getVideoDriver(); IVideoDriver * driver = Game->Device->getVideoDriver();
io::IAttributes * attr = smgr->getParameters(); io::IAttributes * attr = smgr->getParameters();
...@@ -1843,9 +1827,6 @@ void runGame ( GameData *game ) ...@@ -1843,9 +1827,6 @@ void runGame ( GameData *game )
return; return;
} }
// these files are needed to run the explorer
io::IFileSystem *fs = game->Device->getFileSystem();
// create an event receiver based on current game data // create an event receiver based on current game data
CQuake3EventHandler *eventHandler = new CQuake3EventHandler( game ); CQuake3EventHandler *eventHandler = new CQuake3EventHandler( game );
......
...@@ -388,7 +388,7 @@ void Q3ShaderFactory ( Q3LevelLoadParameter &loadParam, ...@@ -388,7 +388,7 @@ void Q3ShaderFactory ( Q3LevelLoadParameter &loadParam,
vector3df(0, 10, 0), vector3df(0, 10, 0),
sceneNodeID sceneNodeID
); );
snprintf ( buf, 64, "%hs:%d", node->getName(),node->getID() ); snprintf ( buf, 64, "%s:%d", node->getName(),node->getID() );
//node2->setName ( buf ); //node2->setName ( buf );
sceneNodeID += 1; sceneNodeID += 1;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment