ReviewOS

also looking at this

craft-native/craft

fix(android): text going to the JVM is modified UTF-8, and was not being

#168
Merged chris wants to merge fix/android-modified-utf8 into main
12 files +326 -136
packages/zig/src/bridge_android_shareditem.zigmodified+5-12
Changes to packages/zig/src/bridge_android_shareditem.zig
@@ -106,7 +106,7 @@ fn openPrefs(j: Jni, allocator: std.mem.Allocator, activity: jobject, group: []c
106106 "getSharedPreferences",
107107 "(Ljava/lang/String;I)Landroid/content/SharedPreferences;",
108108 ),
109 &.{ .{ .l = try j.newStringUtf(name.ptr) }, .{ .i = mode_private } },
109 &.{ .{ .l = try j.newStringUtf8(allocator, name) }, .{ .i = mode_private } },
110110 );
111111}
112112
@@ -134,8 +134,8 @@ pub fn set(
134134 "(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;",
135135 ),
136136 &.{
137 .{ .l = try javaString(j, allocator, key) },
138 .{ .l = try javaString(j, allocator, value) },
137 .{ .l = try j.newStringUtf8(allocator, key) },
138 .{ .l = try j.newStringUtf8(allocator, value) },
139139 },
140140 );
141141
@@ -167,7 +167,7 @@ pub fn remove(
167167 "remove",
168168 "(Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;",
169169 ),
170 &.{.{ .l = try javaString(j, allocator, key) }},
170 &.{.{ .l = try j.newStringUtf8(allocator, key) }},
171171 );
172172 try j.callVoidMethodA(editor, try j.methodId(editor_cls, "apply", "()V"), &.{});
173173}
@@ -194,7 +194,7 @@ pub fn get(
194194 "getString",
195195 "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;",
196196 ),
197 &.{ .{ .l = try javaString(j, allocator, key) }, .{ .l = null } },
197 &.{ .{ .l = try j.newStringUtf8(allocator, key) }, .{ .l = null } },
198198 );
199199
200200 if (value == null) return null;
@@ -212,13 +212,6 @@ fn editorFor(j: Jni, prefs: jobject) !jobject {
212212 );
213213}
214214
215fn javaString(j: Jni, allocator: std.mem.Allocator, text: []const u8) !jni.jstring {
216 const terminated = try allocator.allocSentinel(u8, text.len, 0);
217 defer allocator.free(terminated);
218 @memcpy(terminated, text);
219 return j.newStringUtf(terminated.ptr);
220}
221
222215// =============================================================================
223216// Tests
224217// =============================================================================