[
https://issues.apache.org/jira/browse/PDFBOX-2685?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14323290#comment-14323290
]
Maruan Sahyoun commented on PDFBOX-2685:
----------------------------------------
OK - I looked at removing setDirect but it much more has the potential to cause
regressions. In addition there are some assumptions in the current code about
which objects have to be direct and which are not that IMHO are not inline with
the spec.
So the current codes treats or marks objects as direct which are not required
to be so (such as length for a cross reference stream) where others are not
explicitly marked.
I'm a little uncertain about doing that in the 2.0 timeframe. OTOH the changes
required would be API breaking and the current code of being able to
potentially set everything to direct/indirect is not very useful.
There are only a small number of items which have to be direct as there are
some which shall be indirect. We would be better off to handle that
specifically. Unfortunately e.g. COSWriter has not been built that way.
WDYT?
> COS 'primitive' types are mutable
> ---------------------------------
>
> Key: PDFBOX-2685
> URL: https://issues.apache.org/jira/browse/PDFBOX-2685
> Project: PDFBox
> Issue Type: Bug
> Affects Versions: 1.8.8, 1.8.9, 2.0.0
> Reporter: Tilman Hausherr
> Assignee: Maruan Sahyoun
> Fix For: 2.0.0
>
>
> From [~torakiki]:
> They are cached and they are mutable so this:
> {code}
> COSInteger cosint = COSInteger.get(10);
> cosint.setValue(50);
> //lets move to a totally unrelated part of my software
> System.out.println(COSInteger.get(10));
> {code}
> prints COSInteger(50) so basically I ask for a 10 and get a 50, isn't it
> weird (and error prone)? ... or the way around, I call cosint.setValue(50) at
> some point in the software and that makes it a 50 everywhere I used
> COSInteger.get(10).
> That's of course also true for the other mutable attributes setDirect and
> setNeedToBeUpdate.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]