<AWT Dev> Proposal: X11 Time stamp data should be unsigned

Ichiroh Takiguchi takiguc at linux.vnet.ibm.com
Tue Jun 19 13:22:05 UTC 2018


Hello,
IBM would like to contribute a patch to OpenJDK project.

Time stamp data on X11 ClientMessage should be 32 bit unsigned int.
But it's converted to signed long on Java.
It should be masked as unsigned 32bit data

I'd like to obtain a sponsor.

----------
--- 
old/src/java.desktop/unix/classes/sun/awt/X11/XDnDDropTargetProtocol.java 
        2018-06-19 22:10:49.313678852 +0900
+++ 
new/src/java.desktop/unix/classes/sun/awt/X11/XDnDDropTargetProtocol.java 
        2018-06-19 22:10:48.670692432 +0900
@@ -620,7 +620,7 @@

          /* Time stamp - new in XDnD version 1. */
          if (sourceProtocolVersion > 0) {
-            time_stamp = xclient.get_data(3);
+            time_stamp = xclient.get_data(3) & 0xFFFFFFFFL;
          }

          /* User action - new in XDnD version 2. */
@@ -867,7 +867,7 @@
           */
          if (dropAction == DnDConstants.ACTION_MOVE && success) {

-            long time_stamp = xclient.get_data(2);
+            long time_stamp = xclient.get_data(2) & 0xFFFFFFFFL;
              long xdndSelectionAtom =
                  
XDnDConstants.XDnDSelection.getSelectionAtom().getAtom();

--- old/src/java.desktop/unix/classes/sun/awt/X11/XMSelection.java       
  2018-06-19 22:10:50.223659632 +0900
+++ new/src/java.desktop/unix/classes/sun/awt/X11/XMSelection.java       
  2018-06-19 22:10:49.576673297 +0900
@@ -200,7 +200,7 @@
              if (log.isLoggable(PlatformLogger.Level.FINE)) {
                  log.fine("client messags = " + xce);
              }
-            long timestamp = xce.get_data(0);
+            long timestamp = xce.get_data(0) & 0xFFFFFFFFL;
              long atom = xce.get_data(1);
              long owner = xce.get_data(2);
              long data = xce.get_data(3);
----------

Thanks,
Ichiroh Takiguchi
IBM Japan, Ltd.



More information about the awt-dev mailing list