@@ -1544,6 +1544,7 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image)
1544
1544
index ;
1545
1545
1546
1546
MagickBooleanType
1547
+ added_newline ,
1547
1548
status ;
1548
1549
1549
1550
MagickOffsetType
@@ -1762,6 +1763,7 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image)
1762
1763
(void ) SetImageType (image ,BilevelType );
1763
1764
extent = 1 ;
1764
1765
q = pixels ;
1766
+ added_newline = MagickFalse ;
1765
1767
for (y = 0 ; y < (ssize_t ) image -> rows ; y ++ )
1766
1768
{
1767
1769
const PixelPacket
@@ -1784,12 +1786,19 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image)
1784
1786
* q ++ = '\n' ;
1785
1787
(void ) WriteBlob (image ,(size_t ) (q - pixels ),pixels );
1786
1788
q = pixels ;
1789
+ added_newline = MagickTrue ;
1787
1790
}
1788
1791
}
1789
1792
* q ++ = (unsigned char ) (GetPixelLuma (image ,p ) >= ((MagickRealType )
1790
1793
QuantumRange /2.0 ) ? '0' : '1' );
1791
1794
p ++ ;
1792
1795
}
1796
+ if (added_newline == MagickFalse )
1797
+ {
1798
+ * q ++ = '\n' ;
1799
+ (void ) WriteBlob (image ,(size_t ) (q - pixels ),pixels );
1800
+ q = pixels ;
1801
+ }
1793
1802
if (image -> previous == (Image * ) NULL )
1794
1803
{
1795
1804
status = SetImageProgress (image ,SaveImageTag ,(MagickOffsetType ) y ,
@@ -1821,6 +1830,7 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image)
1821
1830
else
1822
1831
(void ) WriteBlobString (image ,"4294967295\n" );
1823
1832
q = pixels ;
1833
+ added_newline = MagickFalse ;
1824
1834
for (y = 0 ; y < (ssize_t ) image -> rows ; y ++ )
1825
1835
{
1826
1836
const PixelPacket
@@ -1855,12 +1865,19 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image)
1855
1865
* q ++ = '\n' ;
1856
1866
(void ) WriteBlob (image ,(size_t ) (q - pixels ),pixels );
1857
1867
q = pixels ;
1868
+ added_newline = MagickTrue ;
1858
1869
}
1859
1870
}
1860
1871
(void ) memcpy ((char * ) q ,buffer ,extent );
1861
1872
q += (ptrdiff_t ) extent ;
1862
1873
p ++ ;
1863
1874
}
1875
+ if (added_newline == MagickFalse )
1876
+ {
1877
+ * q ++ = '\n' ;
1878
+ (void ) WriteBlob (image ,(size_t ) (q - pixels ),pixels );
1879
+ q = pixels ;
1880
+ }
1864
1881
if (image -> previous == (Image * ) NULL )
1865
1882
{
1866
1883
status = SetImageProgress (image ,SaveImageTag ,(MagickOffsetType ) y ,
@@ -1894,6 +1911,7 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image)
1894
1911
else
1895
1912
(void ) WriteBlobString (image ,"4294967295\n" );
1896
1913
q = pixels ;
1914
+ added_newline = MagickFalse ;
1897
1915
for (y = 0 ; y < (ssize_t ) image -> rows ; y ++ )
1898
1916
{
1899
1917
const PixelPacket
@@ -1933,12 +1951,19 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image)
1933
1951
* q ++ = '\n' ;
1934
1952
(void ) WriteBlob (image ,(size_t ) (q - pixels ),pixels );
1935
1953
q = pixels ;
1954
+ added_newline = MagickTrue ;
1936
1955
}
1937
1956
}
1938
1957
(void ) memcpy ((char * ) q ,buffer ,extent );
1939
1958
q += (ptrdiff_t ) extent ;
1940
1959
p ++ ;
1941
1960
}
1961
+ if (added_newline == MagickFalse )
1962
+ {
1963
+ * q ++ = '\n' ;
1964
+ (void ) WriteBlob (image ,(size_t ) (q - pixels ),pixels );
1965
+ q = pixels ;
1966
+ }
1942
1967
if (image -> previous == (Image * ) NULL )
1943
1968
{
1944
1969
status = SetImageProgress (image ,SaveImageTag ,(MagickOffsetType ) y ,
0 commit comments