summaryrefslogtreecommitdiff
path: root/net/ORBit2
diff options
context:
space:
mode:
authorrillig <rillig>2007-02-20 15:08:59 +0000
committerrillig <rillig>2007-02-20 15:08:59 +0000
commitfd120829bece21cf9e3df1c5ff45dd2c04155ad9 (patch)
treeb74139ae22423457e3d2b74e609332988785901d /net/ORBit2
parentb246b9c95afa0726089cfe9e75e86b9c62f0233c (diff)
downloadpkgsrc-fd120829bece21cf9e3df1c5ff45dd2c04155ad9.tar.gz
Added two patches that remove void pointer arithmetic.
Diffstat (limited to 'net/ORBit2')
-rw-r--r--net/ORBit2/distinfo4
-rw-r--r--net/ORBit2/patches/patch-ab175
-rw-r--r--net/ORBit2/patches/patch-ac34
3 files changed, 212 insertions, 1 deletions
diff --git a/net/ORBit2/distinfo b/net/ORBit2/distinfo
index 88a552c90f7..8b89229f518 100644
--- a/net/ORBit2/distinfo
+++ b/net/ORBit2/distinfo
@@ -1,6 +1,8 @@
-$NetBSD: distinfo,v 1.31 2007/02/01 12:52:24 drochner Exp $
+$NetBSD: distinfo,v 1.32 2007/02/20 15:08:59 rillig Exp $
SHA1 (ORBit2-2.14.5.tar.bz2) = 6af07a22f30572ed1c1e5b375ea057da21f2510b
RMD160 (ORBit2-2.14.5.tar.bz2) = 6fcc8270474402c866c5451ff9222e69ab453033
Size (ORBit2-2.14.5.tar.bz2) = 729304 bytes
SHA1 (patch-aa) = 6e87e28e3634908f35c219f81a47d0353cfaf551
+SHA1 (patch-ab) = d422957ba3e228eab0f558c8b977fc3e6403c533
+SHA1 (patch-ac) = cbd62d1f1ed38ce1863efc9b3de0c99825b77634
diff --git a/net/ORBit2/patches/patch-ab b/net/ORBit2/patches/patch-ab
new file mode 100644
index 00000000000..b6153262ee9
--- /dev/null
+++ b/net/ORBit2/patches/patch-ab
@@ -0,0 +1,175 @@
+$NetBSD: patch-ab,v 1.4 2007/02/20 15:08:59 rillig Exp $
+
+http://bugzilla.gnome.org/show_bug.cgi?id=410002
+
+Though shalt not use void pointers in arithmetics.
+
+NB: Cleaning up the rest of the code is left to the upstream authors as
+an exercise.
+
+--- src/orb/orb-core/corba-any.c.orig Mon Jan 1 18:01:32 2007
++++ src/orb/orb-core/corba-any.c Tue Feb 20 07:51:28 2007
+@@ -3,6 +3,13 @@
+ #include "orb-core-private.h"
+ #include <string.h>
+
++#define PTR_PLUS(ptr, offset) \
++ ((gpointer) (((guchar *)(ptr)) + (offset)))
++
++/** Adds the size of TYPE to the gpointer PTR. */
++#define ADDSIZE(ptr, type) \
++ ((gpointer) (((guchar *)(ptr)) + sizeof (type)))
++
+ #define SKIP_ALIAS(tc) \
+ while ((tc)->kind == CORBA_tk_alias) { (tc) = (tc)->subtypes [0]; }
+
+@@ -162,12 +171,12 @@
+ int offset;
+ for (i = offset = 0; i < tc->sub_parts; i++) {
+ offset = ALIGN_VALUE (offset, tc->subtypes[i]->c_align);
+- *val = val0 + offset;
++ *val = PTR_PLUS (val0, offset);
+ ORBit_marshal_value (buf, val, tc->subtypes[i]);
+ offset += ORBit_gather_alloc_info (tc->subtypes[i]);
+ }
+ offset = ALIGN_VALUE (offset, tc->c_align);
+- *val = val0 + offset;
++ *val = PTR_PLUS (val0, offset);
+ break;
+ }
+ case CORBA_tk_union: {
+@@ -183,14 +192,14 @@
+ for (i = 0; i < tc->sub_parts; i++)
+ sz = MAX (sz, ORBit_gather_alloc_info (tc->subtypes[i]));
+
+- *val = val0 + ALIGN_VALUE (ORBit_gather_alloc_info (tc->discriminator),
+- tc->c_align);
++ *val = PTR_PLUS (val0, ALIGN_VALUE (ORBit_gather_alloc_info (tc->discriminator),
++ tc->c_align));
+ body = *val;
+ ORBit_marshal_value (buf, &body, subtc);
+ /* FIXME:
+ * WATCHOUT: end of subtc may not be end of union
+ */
+- *val = *val + ALIGN_VALUE (sz, tc->c_align);
++ *val = PTR_PLUS (*val, ALIGN_VALUE (sz, tc->c_align));
+ break;
+ }
+ case CORBA_tk_wstring: {
+@@ -536,13 +545,13 @@
+ gpointer val0 = *val;
+ for (i = offset = 0; i < tc->sub_parts; i++) {
+ offset = ALIGN_VALUE (offset, tc->subtypes[i]->c_align);
+- *val = val0 + offset;
++ *val = PTR_PLUS (val0, offset);
+ if (ORBit_demarshal_value (tc->subtypes[i], val, buf, orb))
+ return TRUE;
+ offset += ORBit_gather_alloc_info (tc->subtypes[i]);
+ }
+ offset = ALIGN_VALUE (offset, tc->c_align);
+- *val = val0 + offset;
++ *val = PTR_PLUS (val0, offset);
+ break;
+ }
+ case CORBA_tk_union: {
+@@ -560,14 +569,14 @@
+ for (i = 0; i < tc->sub_parts; i++)
+ sz = MAX (sz, ORBit_gather_alloc_info (tc->subtypes[i]));
+
+- *val = val0 + ALIGN_VALUE (ORBit_gather_alloc_info (tc->discriminator),
+- tc->c_align);
++ *val = PTR_PLUS (val0, ALIGN_VALUE (ORBit_gather_alloc_info (tc->discriminator),
++ tc->c_align));
+ body = *val;
+ if (ORBit_demarshal_value (subtc, &body, buf, orb))
+ return TRUE;
+
+ /* WATCHOUT: end subtc body may not be end of union */
+- *val = *val + ALIGN_VALUE (sz, tc->c_align);
++ *val = PTR_PLUS (*val, ALIGN_VALUE (sz, tc->c_align));
+ break;
+ }
+ case CORBA_tk_string:
+@@ -860,14 +869,14 @@
+
+ for (i = offset = 0; i < tc->sub_parts; i++) {
+ offset = ALIGN_VALUE (offset, tc->subtypes[i]->c_align);
+- *val = val0 + offset;
+- *newval = ((guchar *)newval0 + offset);
++ *val = PTR_PLUS (val0, offset);
++ *newval = PTR_PLUS (newval0, offset);
+ ORBit_copy_value_core (val, newval, tc->subtypes[i]);
+ offset += ORBit_gather_alloc_info (tc->subtypes[i]);
+ }
+ offset = ALIGN_VALUE (offset, tc->c_align);
+- *val = val0 + offset;
+- *newval = newval0 + offset;
++ *val = PTR_PLUS (val0, offset);
++ *newval = PTR_PLUS (newval0, offset);
+ break;
+ }
+ case CORBA_tk_union: {
+@@ -876,6 +885,7 @@
+ CORBA_TypeCode utc;
+ gint union_align = tc->c_align;
+ size_t union_size = ORBit_gather_alloc_info (tc);
++ size_t aligned_size;
+
+ pval1 = *val;
+ pval2 = *newval;
+@@ -884,9 +894,10 @@
+
+ ORBit_copy_value_core (&pval1, &pval2, tc->discriminator);
+
+- pval1 = val0 + ALIGN_VALUE (ORBit_gather_alloc_info (tc->discriminator),
++ aligned_size = ALIGN_VALUE (ORBit_gather_alloc_info (tc->discriminator),
+ union_align);
+- pval2 = newval0 + (pval1 - val0);
++ pval1 = PTR_PLUS (val0, aligned_size);
++ pval2 = PTR_PLUS (newval0, aligned_size);
+
+ ORBit_copy_value_core (&pval1, &pval2, utc);
+
+@@ -1044,8 +1055,8 @@
+
+ for (i = offset = 0; i < tc->sub_parts; i++) {
+ offset = ALIGN_VALUE (offset, tc->subtypes[i]->c_align);
+- *a = a0 + offset;
+- *b = b0 + offset;
++ *a = PTR_PLUS (a0, offset);
++ *b = PTR_PLUS (b0, offset);
+ if (!ORBit_value_equivalent (a, b, tc->subtypes [i], ev))
+ return FALSE;
+ offset += ORBit_gather_alloc_info (tc->subtypes[i]);
+@@ -1052,8 +1063,8 @@
+ }
+
+ offset = ALIGN_VALUE (offset, tc->c_align);
+- *a = a0 + offset;
+- *b = b0 + offset;
++ *a = PTR_PLUS (a0, offset);
++ *b = PTR_PLUS (b0, offset);
+ return TRUE;
+ }
+
+@@ -1084,6 +1095,7 @@
+ gint union_align = tc->c_align;
+ size_t union_size = ORBit_gather_alloc_info (tc);
+ gpointer a_orig, b_orig;
++ size_t aligned_size;
+
+ a_orig = *a;
+ b_orig = *b;
+@@ -1097,9 +1109,10 @@
+ if (!ORBit_value_equivalent (a, b, tc->discriminator, ev))
+ return FALSE;
+
+- *a = a_orig + ALIGN_VALUE (ORBit_gather_alloc_info (tc->discriminator),
++ aligned_size = ALIGN_VALUE (ORBit_gather_alloc_info (tc->discriminator),
+ union_align);
+- *b = b_orig + (*a - a_orig);
++ *a = PTR_PLUS (a_orig, aligned_size);
++ *b = PTR_PLUS (b_orig, aligned_size);
+ if (!ORBit_value_equivalent (a, b, utc_a, ev))
+ return FALSE;
+
diff --git a/net/ORBit2/patches/patch-ac b/net/ORBit2/patches/patch-ac
new file mode 100644
index 00000000000..55a4284baba
--- /dev/null
+++ b/net/ORBit2/patches/patch-ac
@@ -0,0 +1,34 @@
+$NetBSD: patch-ac,v 1.1 2007/02/20 15:08:59 rillig Exp $
+
+http://bugzilla.gnome.org/show_bug.cgi?id=410002
+
+--- src/orb/dynamic/dynany.c.orig Mon Jan 1 18:01:32 2007
++++ src/orb/dynamic/dynany.c Tue Feb 20 08:12:45 2007
+@@ -104,6 +104,9 @@
+ case CORBA_tk_TypeCode: \
+ case CORBA_tk_Principal
+
++#define PTR_PLUS(ptr, offset) \
++ ((gpointer) (((guchar *)(ptr)) + (offset)))
++
+ /* FIXME: ported very quickly from stable */
+ struct DynamicAny_DynAny_type {
+ struct ORBit_RootObject_struct parent;
+@@ -1422,7 +1425,7 @@
+ (CORBA_Object) subtc, ev);
+ to = any->_value = ORBit_alloc_by_tc (subtc);
+ offset = ALIGN_VALUE (offset, subtc->c_align);
+- tmpsrc = src + offset;
++ tmpsrc = PTR_PLUS (src, offset);
+ ORBit_copy_value_core (&tmpsrc, &to, subtc);
+ offset += ORBit_gather_alloc_info (subtc);
+ }
+@@ -1486,7 +1489,7 @@
+ gpointer tmpdest;
+
+ offset = ALIGN_VALUE (offset, subtc->c_align);
+- tmpdest = dest + offset;
++ tmpdest = PTR_PLUS (dest, offset);
+ ORBit_copy_value_core (&src, &tmpdest, subtc);
+ offset += ORBit_gather_alloc_info (subtc);
+ }