@@ -271,40 +271,40 @@ rgbe_ReadHeader(FreeImageIO *io, fi_handle handle, unsigned *width, unsigned *he
271271*/
272272static FIBOOL
273273rgbe_WriteHeader (FreeImageIO *io, fi_handle handle, unsigned width, unsigned height, rgbeHeaderInfo *info) {
274- char buffer[HDR_MAXLINE];
274+ char buffer[HDR_MAXLINE + 1 ];
275275
276276 const char *programtype = " RADIANCE" ;
277277
278278 if (info && (info->valid & RGBE_VALID_PROGRAMTYPE)) {
279279 programtype = info->programtype ;
280280 }
281281 // The #? is to identify file type, the programtype is optional
282- snprintf (buffer, std::size (buffer), " #?%s\n " , programtype);
283- if (io->write_proc (buffer, 1 , ( unsigned int ) strlen (buffer) , handle) < 1 ) {
282+ unsigned int len = snprintf (buffer, std::size (buffer), " #?%s\n " , programtype);
283+ if (io->write_proc (buffer, 1 , len , handle) < 1 ) {
284284 return rgbe_Error (rgbe_write_error, nullptr );
285285 }
286- snprintf (buffer, std::size (buffer), " %s\n " , info->comment );
287- if (io->write_proc (buffer, 1 , ( unsigned int ) strlen (buffer) , handle) < 1 ) {
286+ len = snprintf (buffer, std::size (buffer), " %s\n " , info->comment );
287+ if (io->write_proc (buffer, 1 , len , handle) < 1 ) {
288288 return rgbe_Error (rgbe_write_error, nullptr );
289289 }
290- snprintf (buffer, std::size (buffer), " FORMAT=32-bit_rle_rgbe\n " );
291- if (io->write_proc (buffer, 1 , ( unsigned int ) strlen (buffer) , handle) < 1 ) {
290+ len = snprintf (buffer, std::size (buffer), " FORMAT=32-bit_rle_rgbe\n " );
291+ if (io->write_proc (buffer, 1 , len , handle) < 1 ) {
292292 return rgbe_Error (rgbe_write_error, nullptr );
293293 }
294294 if (info && (info->valid & RGBE_VALID_GAMMA)) {
295- snprintf (buffer, std::size (buffer), " GAMMA=%g\n " , info->gamma );
296- if (io->write_proc (buffer, 1 , ( unsigned int ) strlen (buffer) , handle) < 1 ) {
295+ len = snprintf (buffer, std::size (buffer), " GAMMA=%g\n " , info->gamma );
296+ if (io->write_proc (buffer, 1 , len , handle) < 1 ) {
297297 return rgbe_Error (rgbe_write_error, nullptr );
298298 }
299299 }
300300 if (info && (info->valid & RGBE_VALID_EXPOSURE)) {
301- snprintf (buffer,std::size (buffer), " EXPOSURE=%g\n " , info->exposure );
302- if (io->write_proc (buffer, 1 , ( unsigned int ) strlen (buffer) , handle) < 1 ) {
301+ len = snprintf (buffer,std::size (buffer), " EXPOSURE=%g\n " , info->exposure );
302+ if (io->write_proc (buffer, 1 , len , handle) < 1 ) {
303303 return rgbe_Error (rgbe_write_error, nullptr );
304304 }
305305 }
306- snprintf (buffer, std::size (buffer), " \n -Y %d +X %d\n " , height, width);
307- if (io->write_proc (buffer, 1 , ( unsigned int ) strlen (buffer) , handle) < 1 ) {
306+ len = snprintf (buffer, std::size (buffer), " \n -Y %d +X %d\n " , height, width);
307+ if (io->write_proc (buffer, 1 , len , handle) < 1 ) {
308308 return rgbe_Error (rgbe_write_error, nullptr );
309309 }
310310
0 commit comments