@@ -1544,6 +1544,7 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image)
15441544 index ;
15451545
15461546 MagickBooleanType
1547+ added_newline ,
15471548 status ;
15481549
15491550 MagickOffsetType
@@ -1762,6 +1763,7 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image)
17621763 (void ) SetImageType (image ,BilevelType );
17631764 extent = 1 ;
17641765 q = pixels ;
1766+ added_newline = MagickFalse ;
17651767 for (y = 0 ; y < (ssize_t ) image -> rows ; y ++ )
17661768 {
17671769 const PixelPacket
@@ -1784,12 +1786,19 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image)
17841786 * q ++ = '\n' ;
17851787 (void ) WriteBlob (image ,(size_t ) (q - pixels ),pixels );
17861788 q = pixels ;
1789+ added_newline = MagickTrue ;
17871790 }
17881791 }
17891792 * q ++ = (unsigned char ) (GetPixelLuma (image ,p ) >= ((MagickRealType )
17901793 QuantumRange /2.0 ) ? '0' : '1' );
17911794 p ++ ;
17921795 }
1796+ if (added_newline == MagickFalse )
1797+ {
1798+ * q ++ = '\n' ;
1799+ (void ) WriteBlob (image ,(size_t ) (q - pixels ),pixels );
1800+ q = pixels ;
1801+ }
17931802 if (image -> previous == (Image * ) NULL )
17941803 {
17951804 status = SetImageProgress (image ,SaveImageTag ,(MagickOffsetType ) y ,
@@ -1821,6 +1830,7 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image)
18211830 else
18221831 (void ) WriteBlobString (image ,"4294967295\n" );
18231832 q = pixels ;
1833+ added_newline = MagickFalse ;
18241834 for (y = 0 ; y < (ssize_t ) image -> rows ; y ++ )
18251835 {
18261836 const PixelPacket
@@ -1855,12 +1865,19 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image)
18551865 * q ++ = '\n' ;
18561866 (void ) WriteBlob (image ,(size_t ) (q - pixels ),pixels );
18571867 q = pixels ;
1868+ added_newline = MagickTrue ;
18581869 }
18591870 }
18601871 (void ) memcpy ((char * ) q ,buffer ,extent );
18611872 q += (ptrdiff_t ) extent ;
18621873 p ++ ;
18631874 }
1875+ if (added_newline == MagickFalse )
1876+ {
1877+ * q ++ = '\n' ;
1878+ (void ) WriteBlob (image ,(size_t ) (q - pixels ),pixels );
1879+ q = pixels ;
1880+ }
18641881 if (image -> previous == (Image * ) NULL )
18651882 {
18661883 status = SetImageProgress (image ,SaveImageTag ,(MagickOffsetType ) y ,
@@ -1894,6 +1911,7 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image)
18941911 else
18951912 (void ) WriteBlobString (image ,"4294967295\n" );
18961913 q = pixels ;
1914+ added_newline = MagickFalse ;
18971915 for (y = 0 ; y < (ssize_t ) image -> rows ; y ++ )
18981916 {
18991917 const PixelPacket
@@ -1933,12 +1951,19 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image)
19331951 * q ++ = '\n' ;
19341952 (void ) WriteBlob (image ,(size_t ) (q - pixels ),pixels );
19351953 q = pixels ;
1954+ added_newline = MagickTrue ;
19361955 }
19371956 }
19381957 (void ) memcpy ((char * ) q ,buffer ,extent );
19391958 q += (ptrdiff_t ) extent ;
19401959 p ++ ;
19411960 }
1961+ if (added_newline == MagickFalse )
1962+ {
1963+ * q ++ = '\n' ;
1964+ (void ) WriteBlob (image ,(size_t ) (q - pixels ),pixels );
1965+ q = pixels ;
1966+ }
19421967 if (image -> previous == (Image * ) NULL )
19431968 {
19441969 status = SetImageProgress (image ,SaveImageTag ,(MagickOffsetType ) y ,
0 commit comments