Fix XML reader creation for non-existing files and invalid callbacks to return 0.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@1482 dfc29bdd-3216-0410-991c-e03cc46cb475master
parent
45f581d75c
commit
aca761b6d6
|
@ -1,5 +1,9 @@
|
|||
Changes in version 1.5 (... 2008)
|
||||
|
||||
- Fix XML reader creation for non-existing files and invalid callbacks.
|
||||
|
||||
- Avoid loading textures which are not used by the mesh in b3d loader.
|
||||
|
||||
- Added scaleTCoords methods to MeshManipulator
|
||||
|
||||
- Enable use of other meshes for shadow mesh generation, can be used to speed up shadow generation and rendering for complex meshes. Patch based on a version by tonic.
|
||||
|
|
|
@ -550,7 +550,9 @@ private:
|
|||
//! reads the xml file and converts it into the wanted character format.
|
||||
bool readFile(IFileReadCallBack* callback)
|
||||
{
|
||||
int size = callback->getSize();
|
||||
long size = callback->getSize();
|
||||
if (size<0)
|
||||
return false;
|
||||
size += 4; // We need two terminating 0's at the end.
|
||||
// For ASCII we need 1 0's, for UTF-16 2, for UTF-32 4.
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ public:
|
|||
|
||||
//! construct from filename
|
||||
CFileReadCallBack(const char* filename)
|
||||
: File(0), Size(0), Close(true)
|
||||
: File(0), Size(-1), Close(true)
|
||||
{
|
||||
// open file
|
||||
File = fopen(filename, "rb");
|
||||
|
@ -31,7 +31,7 @@ public:
|
|||
|
||||
//! construct from FILE pointer
|
||||
CFileReadCallBack(FILE* file)
|
||||
: File(file), Size(0), Close(false)
|
||||
: File(file), Size(-1), Close(false)
|
||||
{
|
||||
if (File)
|
||||
getFileSize();
|
||||
|
@ -83,63 +83,72 @@ private:
|
|||
//! Creates an instance of an UFT-8 or ASCII character xml parser.
|
||||
IRRLICHT_API IrrXMLReader* IRRCALLCONV createIrrXMLReader(const char* filename)
|
||||
{
|
||||
return new CXMLReaderImpl<char, IXMLBase>(new CFileReadCallBack(filename));
|
||||
return createIrrXMLReader(new CFileReadCallBack(filename));
|
||||
}
|
||||
|
||||
|
||||
//! Creates an instance of an UFT-8 or ASCII character xml parser.
|
||||
IRRLICHT_API IrrXMLReader* IRRCALLCONV createIrrXMLReader(FILE* file)
|
||||
{
|
||||
return new CXMLReaderImpl<char, IXMLBase>(new CFileReadCallBack(file));
|
||||
return createIrrXMLReader(new CFileReadCallBack(file));
|
||||
}
|
||||
|
||||
|
||||
//! Creates an instance of an UFT-8 or ASCII character xml parser.
|
||||
IRRLICHT_API IrrXMLReader* IRRCALLCONV createIrrXMLReader(IFileReadCallBack* callback)
|
||||
{
|
||||
return new CXMLReaderImpl<char, IXMLBase>(callback, false);
|
||||
if (callback && (callback->getSize() >= 0))
|
||||
return new CXMLReaderImpl<char, IXMLBase>(callback, false);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//! Creates an instance of an UTF-16 xml parser.
|
||||
IRRLICHT_API IrrXMLReaderUTF16* IRRCALLCONV createIrrXMLReaderUTF16(const char* filename)
|
||||
{
|
||||
return new CXMLReaderImpl<char16, IXMLBase>(new CFileReadCallBack(filename));
|
||||
return createIrrXMLReaderUTF16(new CFileReadCallBack(filename));
|
||||
}
|
||||
|
||||
|
||||
//! Creates an instance of an UTF-16 xml parser.
|
||||
IRRLICHT_API IrrXMLReaderUTF16* IRRCALLCONV createIrrXMLReaderUTF16(FILE* file)
|
||||
{
|
||||
return new CXMLReaderImpl<char16, IXMLBase>(new CFileReadCallBack(file));
|
||||
return createIrrXMLReaderUTF16(new CFileReadCallBack(file));
|
||||
}
|
||||
|
||||
|
||||
//! Creates an instance of an UTF-16 xml parser.
|
||||
IRRLICHT_API IrrXMLReaderUTF16* IRRCALLCONV createIrrXMLReaderUTF16(IFileReadCallBack* callback)
|
||||
{
|
||||
return new CXMLReaderImpl<char16, IXMLBase>(callback, false);
|
||||
if (callback && (callback->getSize() >= 0))
|
||||
return new CXMLReaderImpl<char16, IXMLBase>(callback, false);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//! Creates an instance of an UTF-32 xml parser.
|
||||
IRRLICHT_API IrrXMLReaderUTF32* IRRCALLCONV createIrrXMLReaderUTF32(const char* filename)
|
||||
{
|
||||
return new CXMLReaderImpl<char32, IXMLBase>(new CFileReadCallBack(filename));
|
||||
return createIrrXMLReaderUTF32(new CFileReadCallBack(filename));
|
||||
}
|
||||
|
||||
|
||||
//! Creates an instance of an UTF-32 xml parser.
|
||||
IRRLICHT_API IrrXMLReaderUTF32* IRRCALLCONV createIrrXMLReaderUTF32(FILE* file)
|
||||
{
|
||||
return new CXMLReaderImpl<char32, IXMLBase>(new CFileReadCallBack(file));
|
||||
return createIrrXMLReaderUTF32(new CFileReadCallBack(file));
|
||||
}
|
||||
|
||||
|
||||
//! Creates an instance of an UTF-32 xml parser.
|
||||
IRRLICHT_API IrrXMLReaderUTF32* IRRCALLCONV createIrrXMLReaderUTF32(IFileReadCallBack* callback)
|
||||
{
|
||||
return new CXMLReaderImpl<char32, IXMLBase>(callback, false);
|
||||
if (callback && (callback->getSize() >= 0))
|
||||
return new CXMLReaderImpl<char32, IXMLBase>(callback, false);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue