[ 
https://issues.apache.org/jira/browse/PDFBOX-4956?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jörg Waßmer updated PDFBOX-4956:
--------------------------------
    Description: 
In the constructor org.apache.pdfbox.cos.COSName.COSName(String, boolean), the 
field COSNam.hashCode becomes initialized after the COSName instance has been 
added to the cache.

Thus, concurrent threads using the cached instance may see different values in 
COSName.hashCode().

 

Just to mention, that's another problem:
 The whole caching is quite dirty, because it leaks memory if the application 
is not aware of calling COSName.clearResources().
 Ideally, the class COSName would not exist at all, since it has no benefit 
over using strings directly. Of course, it would be quite a hard work to get 
rid of it.

 

  was:
In the constructor org.apache.pdfbox.cos.COSName.COSName(String, boolean), the 
field COSNam.hashCode gets initialized after the COSName instance has been 
added to the cache.

Thus, concurrent threads using the cached instance may see different values in 
COSName.hashCode().

 

Just to mention, that's another problem:
The whole caching is quite dirty, because it leaks memory if the application is 
not aware of calling COSName.clearResources().
Ideally, the class COSName would not exist at all, since it has no benefit over 
using strings directly. Of course, it would be quite a hard work to get rid of 
it.

 


> COSName.hashCode initialized after put to cache, instead before
> ---------------------------------------------------------------
>
>                 Key: PDFBOX-4956
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-4956
>             Project: PDFBox
>          Issue Type: Bug
>    Affects Versions: 2.0.21
>            Reporter: Jörg Waßmer
>            Priority: Major
>
> In the constructor org.apache.pdfbox.cos.COSName.COSName(String, boolean), 
> the field COSNam.hashCode becomes initialized after the COSName instance has 
> been added to the cache.
> Thus, concurrent threads using the cached instance may see different values 
> in COSName.hashCode().
>  
> Just to mention, that's another problem:
>  The whole caching is quite dirty, because it leaks memory if the application 
> is not aware of calling COSName.clearResources().
>  Ideally, the class COSName would not exist at all, since it has no benefit 
> over using strings directly. Of course, it would be quite a hard work to get 
> rid of it.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to