66 lines
2.3 KiB
Diff
66 lines
2.3 KiB
Diff
From 3dce1d6b1885f326c55aed9e1d401ac79801396a Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
|
|
Date: Thu, 23 Feb 2023 21:46:59 +0100
|
|
Subject: [PATCH 1/2] value: Use a signed char to old g_value_get_schar result
|
|
|
|
char and signed char are the same in most of platforms, but that's not
|
|
always true such as in arm64, s390x, ppc64el and others.
|
|
|
|
See: https://buildd.debian.org/status/fetch.php?pkg=gjs&arch=arm64&ver=1.75.2-1&stamp=1676991213&raw=0
|
|
|
|
Closes: #529
|
|
---
|
|
gi/value.cpp | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/gi/value.cpp b/gi/value.cpp
|
|
index 2e2f49aa2..651c21ad3 100644
|
|
--- a/gi/value.cpp
|
|
+++ b/gi/value.cpp
|
|
@@ -881,7 +881,7 @@ gjs_value_from_g_value_internal(JSContext *context,
|
|
return false;
|
|
}
|
|
} else if (gtype == G_TYPE_CHAR) {
|
|
- char v;
|
|
+ signed char v;
|
|
v = g_value_get_schar(gvalue);
|
|
value_p.setInt32(v);
|
|
} else if (gtype == G_TYPE_UCHAR) {
|
|
--
|
|
GitLab
|
|
|
|
|
|
From 86a66ea412a725caa59d9fa41ea333117406768e Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
|
|
Date: Thu, 23 Feb 2023 21:53:16 +0100
|
|
Subject: [PATCH 2/2] gi/value: Cleanup schar setting code
|
|
|
|
We still need to use an int32 to hold its result (as that's where a
|
|
signed char is stored in JS), but if the conversion is fine we need to
|
|
cast its value to signed char. Do it using C++ style now though.
|
|
---
|
|
gi/value.cpp | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/gi/value.cpp b/gi/value.cpp
|
|
index 651c21ad3..17db002f6 100644
|
|
--- a/gi/value.cpp
|
|
+++ b/gi/value.cpp
|
|
@@ -458,11 +458,11 @@ gjs_value_to_g_value_internal(JSContext *context,
|
|
return throw_expect_type(context, value, "string");
|
|
}
|
|
} else if (gtype == G_TYPE_CHAR) {
|
|
- gint32 i;
|
|
+ int32_t i;
|
|
if (Gjs::js_value_to_c_checked<signed char>(context, value, &i,
|
|
&out_of_range) &&
|
|
!out_of_range) {
|
|
- g_value_set_schar(gvalue, (signed char)i);
|
|
+ g_value_set_schar(gvalue, static_cast<signed char>(i));
|
|
} else {
|
|
return throw_expect_type(context, value, "char", 0, out_of_range);
|
|
}
|
|
--
|
|
GitLab
|
|
|