texlive/source-dvipdfm-x.dif
Dr. Werner Fink df867d8099 - Added -Wno-error=incompatible-pointer-types to optflags to work
around boo#1228342 and enable build with GCC 14 on 32bit
  architectures.

I plan to not to close the bug and keep an eye on the package and
remove the flag when it hopefully becomes unnecessary in the future.

If the request is OK, please forward it to Factory too so that we can
switch the default compiler.  Thanks!

OBS-URL: https://build.opensuse.org/package/show/Publishing:TeXLive/texlive?expand=0&rev=478
2024-08-15 13:10:04 +00:00

56 lines
1.8 KiB
Plaintext

2024-04-07 Yukimasa Morimi <h20y6m@yahoo.co.jp>
* pdfximage.c: fix an issue where the PDF becomes large when
inserting the same image multiple times.
https://github.com/texjporg/tex-jp-build/pull/169
---
texk/dvipdfm-x/pdfximage.c | 29 ++++++++++++++++-------------
1 file changed, 16 insertions(+), 13 deletions(-)
--- texk/dvipdfm-x/pdfximage.c 2024-03-05 00:40:55.000000000 +0100
+++ texk/dvipdfm-x/pdfximage.c 2024-04-12 14:22:48.800914761 +0200
@@ -396,6 +396,8 @@ load_image (const char *ident, const cha
int utf8name_failed = 0;
#endif /* WIN32 */
+#define dpx_streq(a, b) ((a) == (b) || (a) && (b) && strcmp(a, b) == 0)
+
int
pdf_ximage_load_image (const char *ident, const char *filename, load_options options)
{
@@ -408,20 +410,21 @@ pdf_ximage_load_image (const char *ident
for (i = 0; i < ic->count; i++) {
I = &ic->ximages[i];
- if (I->filename && !strcmp(filename, I->filename)) {
- id = i;
- break;
- }
- }
- if (id >= 0) {
- if (I->attr.page_no == options.page_no &&
- (I->attr.page_name && options.page_name &&
- strcmp(I->attr.page_name, options.page_name) == 0) &&
- !pdf_compare_object(I->attr.dict, options.dict) && /* ????? */
- I->attr.bbox_type == options.bbox_type) {
- return id;
- }
+ if (I->filename == NULL || strcmp(filename, I->filename) != 0)
+ continue;
+ id = i;
f = I->fullname;
+
+ if (I->attr.page_no != options.page_no)
+ continue;
+ if (!dpx_streq(I->attr.page_name, options.page_name))
+ continue;
+ if (pdf_compare_object(I->attr.dict, options.dict) != 0) /* ????? */
+ continue;
+ if (I->attr.bbox_type != options.bbox_type)
+ continue;
+
+ return id;
}
if (f) {
/* we already have converted this file; f is the temporary file name */