diff --git a/include/IWriteFile.h b/include/IWriteFile.h index ddc147df..68eac14a 100644 --- a/include/IWriteFile.h +++ b/include/IWriteFile.h @@ -21,7 +21,7 @@ namespace io /** \param buffer Pointer to buffer of bytes to write. \param sizeToWrite Amount of bytes to write to the file. \return How much bytes were written. */ - virtual s32 write(const void* buffer, u32 sizeToWrite) = 0; + virtual size_t write(const void* buffer, size_t sizeToWrite) = 0; //! Changes position in file /** \param finalPos Destination position in the file. diff --git a/source/Irrlicht/CImageWriterBMP.cpp b/source/Irrlicht/CImageWriterBMP.cpp index 682b3bf0..84f107ee 100644 --- a/source/Irrlicht/CImageWriterBMP.cpp +++ b/source/Irrlicht/CImageWriterBMP.cpp @@ -105,7 +105,7 @@ bool CImageWriterBMP::writeImage(io::IWriteFile* file, IImage* image, u32 param) u32 row_stride = (pixel_size * imageHeader.Width); // length of one row in bytes, rounded up to nearest 4-byte boundary - s32 row_size = ((3 * imageHeader.Width) + 3) & ~3; + size_t row_size = ((3 * imageHeader.Width) + 3) & ~3; // allocate and clear memory for our scan line u8* row_pointer = new u8[row_size]; diff --git a/source/Irrlicht/CImageWriterJPG.cpp b/source/Irrlicht/CImageWriterJPG.cpp index d96011ad..55f1bc47 100644 --- a/source/Irrlicht/CImageWriterJPG.cpp +++ b/source/Irrlicht/CImageWriterJPG.cpp @@ -72,7 +72,7 @@ static boolean jpeg_empty_output_buffer(j_compress_ptr cinfo) static void jpeg_term_destination(j_compress_ptr cinfo) { mem_dest_ptr dest = (mem_dest_ptr) cinfo->dest; - const s32 datacount = (s32)(OUTPUT_BUF_SIZE - dest->pub.free_in_buffer); + const size_t datacount = OUTPUT_BUF_SIZE - dest->pub.free_in_buffer; // for now just exit upon file error if (dest->file->write(dest->buffer, datacount) != datacount) ERREXIT (cinfo, JERR_FILE_WRITE); diff --git a/source/Irrlicht/CImageWriterPPM.cpp b/source/Irrlicht/CImageWriterPPM.cpp index aa821891..fd0db971 100644 --- a/source/Irrlicht/CImageWriterPPM.cpp +++ b/source/Irrlicht/CImageWriterPPM.cpp @@ -50,16 +50,22 @@ bool CImageWriterPPM::writeImage(io::IWriteFile *file, IImage *image, u32 param) size = snprintf_irr(cache, 70, "P6\n"); else size = snprintf_irr(cache, 70, "P3\n"); + if ( size < 0 ) + return false; - if (file->write(cache, size) != size) + if (file->write(cache, (size_t)size) != (size_t)size) return false; size = snprintf_irr(cache, 70, "%u %u\n", imageSize.Width, imageSize.Height); - if (file->write(cache, size) != size) + if ( size < 0 ) + return false; + if (file->write(cache, (size_t)size) != (size_t)size) return false; size = snprintf_irr(cache, 70, "255\n"); - if (file->write(cache, size) != size) + if ( size < 0 ) + return false; + if (file->write(cache, (size_t)size) != (size_t)size) return false; if (binary) @@ -88,7 +94,9 @@ bool CImageWriterPPM::writeImage(io::IWriteFile *file, IImage *image, u32 param) { const video::SColor& pixel = image->getPixel(c, h); size = snprintf_irr(cache, 70, "%.3u %.3u %.3u%s", pixel.getRed(), pixel.getGreen(), pixel.getBlue(), n % 5 == 4 ? "\n" : " "); - if (file->write(cache, size) != size) + if ( size < 0 ) + return false; + if (file->write(cache, (size_t)size) != (size_t)size) return false; } } diff --git a/source/Irrlicht/CImageWriterTGA.cpp b/source/Irrlicht/CImageWriterTGA.cpp index 229d2279..6198e3ff 100644 --- a/source/Irrlicht/CImageWriterTGA.cpp +++ b/source/Irrlicht/CImageWriterTGA.cpp @@ -108,7 +108,7 @@ bool CImageWriterTGA::writeImage(io::IWriteFile *file, IImage *image,u32 param) u32 row_stride = (pixel_size * imageHeader.ImageWidth); // length of one output row in bytes - s32 row_size = ((imageHeader.PixelDepth / 8) * imageHeader.ImageWidth); + size_t row_size = ((imageHeader.PixelDepth / 8) * imageHeader.ImageWidth); // allocate a row do translate data into u8* row_pointer = new u8[row_size]; diff --git a/source/Irrlicht/CMemoryFile.cpp b/source/Irrlicht/CMemoryFile.cpp index 75a87d9e..22c57e65 100644 --- a/source/Irrlicht/CMemoryFile.cpp +++ b/source/Irrlicht/CMemoryFile.cpp @@ -107,9 +107,9 @@ CMemoryWriteFile::~CMemoryWriteFile() //! returns how much was written -s32 CMemoryWriteFile::write(const void* buffer, u32 sizeToWrite) +size_t CMemoryWriteFile::write(const void* buffer, size_t sizeToWrite) { - s32 amount = static_cast(sizeToWrite); + long amount = (long)sizeToWrite; if (Pos + amount > Len) amount -= Pos + amount - Len; @@ -121,7 +121,7 @@ s32 CMemoryWriteFile::write(const void* buffer, u32 sizeToWrite) Pos += amount; - return amount; + return (size_t)amount; } diff --git a/source/Irrlicht/CMemoryFile.h b/source/Irrlicht/CMemoryFile.h index dd132891..71f95057 100644 --- a/source/Irrlicht/CMemoryFile.h +++ b/source/Irrlicht/CMemoryFile.h @@ -66,7 +66,7 @@ namespace io virtual ~CMemoryWriteFile(); //! returns how much was written - virtual s32 write(const void* buffer, u32 sizeToWrite) _IRR_OVERRIDE_; + virtual size_t write(const void* buffer, size_t sizeToWrite) _IRR_OVERRIDE_; //! changes position in file, returns true if successful virtual bool seek(long finalPos, bool relativeMovement = false) _IRR_OVERRIDE_; diff --git a/source/Irrlicht/CWriteFile.cpp b/source/Irrlicht/CWriteFile.cpp index 3036fc0c..657825e2 100644 --- a/source/Irrlicht/CWriteFile.cpp +++ b/source/Irrlicht/CWriteFile.cpp @@ -41,12 +41,12 @@ inline bool CWriteFile::isOpen() const //! returns how much was read -s32 CWriteFile::write(const void* buffer, u32 sizeToWrite) +size_t CWriteFile::write(const void* buffer, size_t sizeToWrite) { if (!isOpen()) return 0; - return (s32)fwrite(buffer, 1, sizeToWrite, File); + return fwrite(buffer, 1, sizeToWrite, File); } diff --git a/source/Irrlicht/CWriteFile.h b/source/Irrlicht/CWriteFile.h index 54044fb8..d0e2c804 100644 --- a/source/Irrlicht/CWriteFile.h +++ b/source/Irrlicht/CWriteFile.h @@ -27,7 +27,7 @@ namespace io virtual ~CWriteFile(); //! Reads an amount of bytes from the file. - virtual s32 write(const void* buffer, u32 sizeToWrite) _IRR_OVERRIDE_; + virtual size_t write(const void* buffer, size_t sizeToWrite) _IRR_OVERRIDE_; //! Changes position in file, returns true if successful. virtual bool seek(long finalPos, bool relativeMovement = false) _IRR_OVERRIDE_; diff --git a/tests/writeImageToFile.cpp b/tests/writeImageToFile.cpp index 22608ca7..4614befe 100644 --- a/tests/writeImageToFile.cpp +++ b/tests/writeImageToFile.cpp @@ -97,7 +97,7 @@ bool writeImageToFile(void) goto cleanup; } - if (memoryFile->getPos() != writtenFile->write(buffer, memoryFile->getPos())) + if ((size_t)memoryFile->getPos() != writtenFile->write(buffer, (size_t)memoryFile->getPos())) { logTestString("Error while writing to %s.\n", writtenFilename); assert_log(false); diff --git a/tools/GUIEditor/CMemoryReadWriteFile.cpp b/tools/GUIEditor/CMemoryReadWriteFile.cpp index 6ccc8c7c..7a803e0d 100644 --- a/tools/GUIEditor/CMemoryReadWriteFile.cpp +++ b/tools/GUIEditor/CMemoryReadWriteFile.cpp @@ -13,7 +13,7 @@ CMemoryReadWriteFile::CMemoryReadWriteFile(const c8* filename) } -s32 CMemoryReadWriteFile::write(const void* buffer, u32 sizeToWrite) +size_t CMemoryReadWriteFile::write(const void* buffer, size_t sizeToWrite) { // no point in writing 0 bytes if (sizeToWrite < 1) @@ -24,7 +24,7 @@ s32 CMemoryReadWriteFile::write(const void* buffer, u32 sizeToWrite) Data.set_used(Pos+sizeToWrite); // copy data - memcpy( (void*) &Data[Pos], buffer, (size_t) sizeToWrite); + memcpy( (void*) &Data[Pos], buffer, sizeToWrite); Pos += sizeToWrite; diff --git a/tools/GUIEditor/CMemoryReadWriteFile.h b/tools/GUIEditor/CMemoryReadWriteFile.h index e8968f49..4b110bf9 100644 --- a/tools/GUIEditor/CMemoryReadWriteFile.h +++ b/tools/GUIEditor/CMemoryReadWriteFile.h @@ -27,7 +27,7 @@ namespace io //! \param buffer: Pointer to buffer of bytes to write. //! \param sizeToWrite: Amount of bytes to written to the file. //! \return Returns how much bytes were written. - virtual s32 write(const void* buffer, u32 sizeToWrite); + virtual size_t write(const void* buffer, size_t sizeToWrite); //! Changes position in file, returns true if successful. //! \param finalPos: Destination position in the file.