i#32546# - Java UnoRuntime.getUniqueKey/generateOid do not work reliably
In the Java UNO bridge, UnoRuntime.generateOid() generated the object-specific part of the OID using java.lang.Object.hashCode(), which is only 32 bits long, and is commonly overriden and could thus return values from an even smaller range, so OID collisions were quite likely. This changes UnoRuntime.generateOid() to use 128 bit UUIDs for the object-specific part of the OID, and store these in an object => oid java.util.WeakHashMap, making OID collisions almost impossible. Patch by: me Suggested by: Stephan Bergmann (stephan dot bergmann dot secondary at googlemail dot com) (cherry picked from commit 6dd83d1c) Change-Id: I8e851a7a69ac2defefa15e9a00118d8f9fc0da95 Reviewed-on: https://gerrit.libreoffice.org/41576Reviewed-by: Stephan Bergmann <sbergman@redhat.com> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins <ci@libreoffice.org>
Showing
Please
register
or
sign in
to comment