[PATCH 5/5] widl: Fix sign handling in parameterized types signatures.

Rémi Bernon rbernon at codeweavers.com
Tue Jan 25 03:13:39 CST 2022


Unspecified sign should be mapped to signed integer / char.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---

This is currently no-op, but it would change the generated uuid.

 tools/widl/typetree.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/widl/typetree.c b/tools/widl/typetree.c
index 94e0b8c59b5..0fa0fb238c7 100644
--- a/tools/widl/typetree.c
+++ b/tools/widl/typetree.c
@@ -211,13 +211,13 @@ static size_t append_type_signature(char **buf, size_t *len, size_t pos, type_t
         {
         case TYPE_BASIC_INT:
         case TYPE_BASIC_INT32:
-            n += strappend(buf, len, pos + n, type_basic_get_sign(type) < 0 ? "i4" : "u4");
+            n += strappend(buf, len, pos + n, type_basic_get_sign(type) <= 0 ? "i4" : "u4");
             return n;
         case TYPE_BASIC_INT64:
-            n += strappend(buf, len, pos + n, type_basic_get_sign(type) < 0 ? "i8" : "u8");
+            n += strappend(buf, len, pos + n, type_basic_get_sign(type) <= 0 ? "i8" : "u8");
             return n;
         case TYPE_BASIC_INT8:
-            assert(type_basic_get_sign(type) >= 0); /* signature string for signed char isn't specified */
+            assert(type_basic_get_sign(type) > 0); /* signature string for signed char isn't specified */
             n += strappend(buf, len, pos + n, "u1");
             return n;
         case TYPE_BASIC_FLOAT:
-- 
2.34.1




More information about the wine-devel mailing list