Merge branch 'issue-133' into 'master'

tiff2pdf: avoid divide by 0

Closes #133

See merge request libtiff/libtiff!126
This commit is contained in:
Even Rouault 2020-03-24 12:39:18 +00:00
commit 3c47638aaa

View File

@ -4942,6 +4942,16 @@ tsize_t t2p_write_pdf_xobject_stream_dict(ttile_t tile,
return(written);
}
/* used to normalize the White Point */
#define normalizePoint(x,y,z) do { \
if (y != 0.0F) { \
x /= y; \
z /= y; \
y = 1.0F; \
} \
} while(0)
/*
* This function writes a PDF Image XObject Colorspace name to output.
*/
@ -5002,9 +5012,7 @@ tsize_t t2p_write_pdf_xobject_cs(T2P* t2p, TIFF* output){
X_W = t2p->tiff_whitechromaticities[0];
Y_W = t2p->tiff_whitechromaticities[1];
Z_W = 1.0F - (X_W + Y_W);
X_W /= Y_W;
Z_W /= Y_W;
Y_W = 1.0F;
normalizePoint(X_W, Y_W, Z_W);
buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
check_snprintf_ret(t2p, buflen, buffer);
written += t2pWriteFile(output, (tdata_t) buffer, buflen);
@ -5133,9 +5141,7 @@ tsize_t t2p_write_pdf_xobject_calcs(T2P* t2p, TIFF* output){
X_W = t2p->tiff_whitechromaticities[0];
Y_W = t2p->tiff_whitechromaticities[1];
Z_W = 1.0F - (X_W + Y_W);
X_W /= Y_W;
Z_W /= Y_W;
Y_W = 1.0F;
normalizePoint(X_W, Y_W, Z_W);
}
if(t2p->pdf_colorspace & T2P_CS_CALRGB){
written += t2pWriteFile(output, (tdata_t) "/CalRGB ", 8);
@ -5160,9 +5166,7 @@ tsize_t t2p_write_pdf_xobject_calcs(T2P* t2p, TIFF* output){
X_W = (X_R * R) + (X_G * G) + (X_B * B);
Y_W = (Y_R * R) + (Y_G * G) + (Y_B * B);
Z_W = (Z_R * R) + (Z_G * G) + (Z_B * B);
X_W /= Y_W;
Z_W /= Y_W;
Y_W = 1.0;
normalizePoint(X_W, Y_W, Z_W);
}
written += t2pWriteFile(output, (tdata_t) "<< \n", 4);
if(t2p->pdf_colorspace & T2P_CS_CALGRAY){