projects
/
supertux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use implicit_depends for generating the wrapper, which is only a 2.6 feature so bumpi...
[supertux.git]
/
src
/
physfs
/
physfs_stream.cpp
diff --git
a/src/physfs/physfs_stream.cpp
b/src/physfs/physfs_stream.cpp
index
3a3c74b
..
28d92c5
100644
(file)
--- a/
src/physfs/physfs_stream.cpp
+++ b/
src/physfs/physfs_stream.cpp
@@
-28,6
+28,11
@@
IFileStreambuf::IFileStreambuf(const std::string& filename)
{
IFileStreambuf::IFileStreambuf(const std::string& filename)
{
+ // check this as PHYSFS seems to be buggy and still returns a
+ // valid pointer in this case
+ if(filename == "") {
+ throw std::runtime_error("Couldn't open file: empty filename");
+ }
file = PHYSFS_openRead(filename.c_str());
if(file == 0) {
std::stringstream msg;
file = PHYSFS_openRead(filename.c_str());
if(file == 0) {
std::stringstream msg;
@@
-49,7
+54,7
@@
IFileStreambuf::underflow()
return traits_type::eof();
}
return traits_type::eof();
}
- PHYSFS_sint64 bytesread =
(size_t)
PHYSFS_read(file, buf, 1, sizeof(buf));
+ PHYSFS_sint64 bytesread = PHYSFS_read(file, buf, 1, sizeof(buf));
if(bytesread <= 0) {
return traits_type::eof();
}
if(bytesread <= 0) {
return traits_type::eof();
}
@@
-123,6
+128,8
@@
OFileStreambuf::~OFileStreambuf()
int
OFileStreambuf::overflow(int c)
{
int
OFileStreambuf::overflow(int c)
{
+ char c2 = (char)c;
+
if(pbase() == pptr())
return 0;
if(pbase() == pptr())
return 0;
@@
-132,7
+139,7
@@
OFileStreambuf::overflow(int c)
return traits_type::eof();
if(c != traits_type::eof()) {
return traits_type::eof();
if(c != traits_type::eof()) {
- PHYSFS_sint64 res = PHYSFS_write(file, &c, 1, 1);
+ PHYSFS_sint64 res = PHYSFS_write(file, &c
2
, 1, 1);
if(res <= 0)
return traits_type::eof();
}
if(res <= 0)
return traits_type::eof();
}