summaryrefslogtreecommitdiff
path: root/lodepng.cpp
diff options
context:
space:
mode:
authorDon Cross <cosinekitty@gmail.com>2015-08-01 18:34:54 -0400
committerDon Cross <cosinekitty@gmail.com>2015-08-01 18:34:54 -0400
commit4db007c3b1b8f793efecd4b4ac046147ee0d2485 (patch)
treef17041a5dcf9464e0473919bca635c9dd4a4e8df /lodepng.cpp
parent0bceffb6eca66fe405c59f5c58c6ef2ff1be4add (diff)
encode() now returns error code if save_file() cannot open output file.
Before this change, encode() would return 0 whether or not the output file was created. There was no way for a caller to know when the file could not be created (e.g. due to a non-existent parent directory). Changed save_file() to return error 79 if it cannot open output file. encode() checks return code from save_file() and passes any error value back to the caller.
Diffstat (limited to 'lodepng.cpp')
-rw-r--r--lodepng.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/lodepng.cpp b/lodepng.cpp
index 326b952..f2a7b23 100644
--- a/lodepng.cpp
+++ b/lodepng.cpp
@@ -5938,10 +5938,12 @@ void load_file(std::vector<unsigned char>& buffer, const std::string& filename)
}
/*write given buffer to the file, overwriting the file, it doesn't append to it.*/
-void save_file(const std::vector<unsigned char>& buffer, const std::string& filename)
+unsigned save_file(const std::vector<unsigned char>& buffer, const std::string& filename)
{
std::ofstream file(filename.c_str(), std::ios::out|std::ios::binary);
+ if(!file) return 79;
file.write(buffer.empty() ? 0 : (char*)&buffer[0], std::streamsize(buffer.size()));
+ return 0;
}
#endif /* LODEPNG_COMPILE_DISK */
@@ -6127,7 +6129,7 @@ unsigned encode(const std::string& filename,
{
std::vector<unsigned char> buffer;
unsigned error = encode(buffer, in, w, h, colortype, bitdepth);
- if(!error) save_file(buffer, filename);
+ if(!error) error = save_file(buffer, filename);
return error;
}