summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Johnson <mjj29@qadesh.matthew.ath.cx>2008-11-16 12:47:38 +0000
committerMatthew Johnson <mjj29@qadesh.matthew.ath.cx>2008-11-16 12:47:38 +0000
commit4e3a820a8d75baa68d6e4de844a10612e95fd0ec (patch)
tree1490aca75bcb803ba9f726d725a04511ec0fd530
parent1e2aeb7f4289de80599b4187d627bfd6b2abd576 (diff)
* Fix array mmarshalling bug (Fixes: #13291)
-rw-r--r--changelog15
-rw-r--r--debug.conf6
-rw-r--r--org/freedesktop/dbus/Marshalling.java2
-rw-r--r--org/freedesktop/dbus/Message.java1
-rw-r--r--org/freedesktop/dbus/test/TestRemoteInterface.java2
-rw-r--r--org/freedesktop/dbus/test/test.java13
-rw-r--r--org/freedesktop/dbus/test/test_p2p_server.java3
7 files changed, 28 insertions, 14 deletions
diff --git a/changelog b/changelog
index 53dec5c..bc5a0e7 100644
--- a/changelog
+++ b/changelog
@@ -1,18 +1,15 @@
-Version 2.5.2:
-
- * Make signals with renamed interfaces and member names work
- if they are explicitly listened for (Partially fixes: #18257).
- Also make the error reporting better when it doesn't work.
- * Add test for signal with renamed interface.
- * Fix clearing of string buffer during marshalling (Fixes: #17362)
- :
-
Version 2.5.1:
* Fix for possible NPex in DBusDaemon
* Add hexdump.jar to Class-Path for libdbus-java.jar
* Add GetAll to properties interface (Patch from
Sveinung Kvilhaugsvik <sveinung84@users.sourceforge.net>)
+ * Make signals with renamed interfaces and member names work
+ if they are explicitly listened for (Partially fixes: #18257).
+ Also make the error reporting better when it doesn't work.
+ * Add test for signal with renamed interface.
+ * Fix clearing of string buffer during marshalling (Fixes: #17362)
+ * Fix array marshalling bug (Fixes: #13291)
Version 2.5:
diff --git a/debug.conf b/debug.conf
index 3df8478..5da0a4a 100644
--- a/debug.conf
+++ b/debug.conf
@@ -1,6 +1,6 @@
org.freedesktop.dbus.MessageReader = ERR
org.freedesktop.dbus.MessageWriter = ERR
-org.freedesktop.dbus.Message = ERR
+org.freedesktop.dbus.Message = DEBUG
org.freedesktop.dbus.MethodCall = ERR
org.freedesktop.dbus.MethodTuple = ERR
org.freedesktop.dbus.AbstractConnection = INFO
@@ -15,10 +15,10 @@ org.freedesktop.dbus.EfficientQueue = ERR
org.freedesktop.dbus.Transport = ERR
org.freedesktop.dbus.Transport$SASL = ERR
org.freedesktop.dbus.Transport$SASL$Command = ERR
-org.freedesktop.dbus.Marshalling = VERBOSE
+org.freedesktop.dbus.Marshalling = ERR
org.freedesktop.dbus.ObjectTree = ERR
org.freedesktop.dbus.BusAddress = ERR
-org.freedesktop.dbus.RemoteInvocationHandler = VERBOSE
+org.freedesktop.dbus.RemoteInvocationHandler = ERR
org.freedesktop.dbus.test.cross_test_client = ERR
org.freedesktop.dbus.bin.DBusDaemon = ERR
org.freedesktop.dbus.bin.DBusDaemon$DBusServer = ERR
diff --git a/org/freedesktop/dbus/Marshalling.java b/org/freedesktop/dbus/Marshalling.java
index c5177f1..7116248 100644
--- a/org/freedesktop/dbus/Marshalling.java
+++ b/org/freedesktop/dbus/Marshalling.java
@@ -95,7 +95,7 @@ public class Marshalling
out = newout;
}
if (null == out[level]) out[level] = new StringBuffer();
- else out[level].delete(0, out[level].length);
+ else out[level].delete(0, out[level].length());
if (basic && !(c instanceof Class))
throw new DBusException(c+_(" is not a basic type"));
diff --git a/org/freedesktop/dbus/Message.java b/org/freedesktop/dbus/Message.java
index 405b202..f0eb80a 100644
--- a/org/freedesktop/dbus/Message.java
+++ b/org/freedesktop/dbus/Message.java
@@ -621,7 +621,6 @@ public class Message
throw new MarshallingException(_("Primative array being sent as non-primative array."));
}
appendBytes(primbuf);
- i++;
} else if (data instanceof List) {
Object[] contents = ((List) data).toArray();
int diff = i;
diff --git a/org/freedesktop/dbus/test/TestRemoteInterface.java b/org/freedesktop/dbus/test/TestRemoteInterface.java
index fab14bb..0379d4e 100644
--- a/org/freedesktop/dbus/test/TestRemoteInterface.java
+++ b/org/freedesktop/dbus/test/TestRemoteInterface.java
@@ -47,4 +47,6 @@ public interface TestRemoteInterface extends DBusInterface
public float testfloat(float[] f);
@Description("Testing structs of structs")
public int[][] teststructstruct(TestStruct3 in);
+ @Description("Regression test for #13291")
+ public void reg13291(byte[] as, byte[] bs);
}
diff --git a/org/freedesktop/dbus/test/test.java b/org/freedesktop/dbus/test/test.java
index 10ee173..1bb433f 100644
--- a/org/freedesktop/dbus/test/test.java
+++ b/org/freedesktop/dbus/test/test.java
@@ -292,6 +292,12 @@ class testclass implements TestRemoteInterface, TestRemoteInterface2, TestSignal
|| !"moo".equals(((Map<Object,Object>) v.getValue()).get("cow")))
test.fail("Didn't send variant correctly");
}
+ public void reg13291(byte[] as, byte[] bs)
+ {
+ if (as.length != bs.length) test.fail("didn't receive identical byte arrays");
+ for (int i = 0; i < as.length; i++)
+ if (as[i] != bs[i]) test.fail("didn't receive identical byte arrays");
+ }
}
/**
@@ -739,6 +745,13 @@ public class test
if (4 != tri.overload()) test.fail("wrong overloaded method called");
System.out.println("done");
+ System.out.print("reg13291...");
+ byte[] as = new byte[10];
+ for (int i = 0; i < 10; i++)
+ as[i] = (byte) (100-i);
+ tri.reg13291(as, as);
+ System.out.println("done");
+
System.out.print("Testing nested lists...");
lli = new Vector<List<Integer>>();
li = new Vector<Integer>();
diff --git a/org/freedesktop/dbus/test/test_p2p_server.java b/org/freedesktop/dbus/test/test_p2p_server.java
index a8365fe..1025bda 100644
--- a/org/freedesktop/dbus/test/test_p2p_server.java
+++ b/org/freedesktop/dbus/test/test_p2p_server.java
@@ -62,6 +62,9 @@ public class test_p2p_server implements TestRemoteInterface
public void newpathtest(Path p)
{
}
+ public void reg13291(byte[] as, byte[] bs)
+ {
+ }
public boolean isRemote() { return false; }
public float testfloat(float[] f)
{