From e038a644850ba23e5dc4e66def5041a6eec88a0f Mon Sep 17 00:00:00 2001 From: Serhii Snitsaruk Date: Fri, 22 Aug 2025 14:33:08 +0200 Subject: [PATCH 1/4] feat: Support local variables on Android --- .../io/sentry/godotplugin/SentryAndroidGodotPlugin.kt | 5 +++++ src/sentry/android/android_event.cpp | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/android_lib/src/main/java/io/sentry/godotplugin/SentryAndroidGodotPlugin.kt b/android_lib/src/main/java/io/sentry/godotplugin/SentryAndroidGodotPlugin.kt index 5c08fc1e0..673fafcf6 100644 --- a/android_lib/src/main/java/io/sentry/godotplugin/SentryAndroidGodotPlugin.kt +++ b/android_lib/src/main/java/io/sentry/godotplugin/SentryAndroidGodotPlugin.kt @@ -428,6 +428,11 @@ class SentryAndroidGodotPlugin(godot: Godot) : GodotPlugin(godot) { preContext = (frameData["pre_context"] as? Array<*>)?.map { it as String } postContext = (frameData["post_context"] as? Array<*>)?.map { it as String } } + + if (frameData.containsKey("vars")) { + val variables = frameData["vars"] as? Dictionary + vars = variables?.mapValues { it.value.toString() } + } } exception.stacktrace?.frames?.add(frame) diff --git a/src/sentry/android/android_event.cpp b/src/sentry/android/android_event.cpp index bed06b36e..730e3950b 100644 --- a/src/sentry/android/android_event.cpp +++ b/src/sentry/android/android_event.cpp @@ -124,6 +124,15 @@ void AndroidEvent::add_exception(const Exception &p_exception) { data["pre_context"] = frame.pre_context; data["post_context"] = frame.post_context; } + + if (!frame.vars.is_empty()) { + Dictionary variables; + for (auto var : frame.vars) { + variables[var.first] = var.second; + } + data["vars"] = variables; + } + android_plugin->call(ANDROID_SN(exceptionAppendStackFrame), exception_handle, data); } From 0d8eded153e23e505ae5d475b84f6b3628bd5c2c Mon Sep 17 00:00:00 2001 From: Serhii Snitsaruk Date: Tue, 9 Sep 2025 11:58:54 +0200 Subject: [PATCH 2/4] Adjust variables assignment --- .../main/java/io/sentry/godotplugin/SentryAndroidGodotPlugin.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android_lib/src/main/java/io/sentry/godotplugin/SentryAndroidGodotPlugin.kt b/android_lib/src/main/java/io/sentry/godotplugin/SentryAndroidGodotPlugin.kt index ff290c758..ec9740c17 100644 --- a/android_lib/src/main/java/io/sentry/godotplugin/SentryAndroidGodotPlugin.kt +++ b/android_lib/src/main/java/io/sentry/godotplugin/SentryAndroidGodotPlugin.kt @@ -445,7 +445,7 @@ class SentryAndroidGodotPlugin(godot: Godot) : GodotPlugin(godot) { if (frameData.containsKey("vars")) { val variables = frameData["vars"] as? Dictionary - vars = variables?.mapValues { it.value.toString() } + vars = variables } } From f2e3d8cc8fccc07e20a7e0685dc04340eb374af9 Mon Sep 17 00:00:00 2001 From: Serhii Snitsaruk Date: Tue, 9 Sep 2025 12:14:09 +0200 Subject: [PATCH 3/4] Update CHANGELOG.md --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1ce90078..a8557c9a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Features + +- Support local variables on Android ([#334](https://github.com/getsentry/sentry-godot/pull/334)) + ### Other changes - Use threads interface for error reporting with Native SDK ([#350](https://github.com/getsentry/sentry-godot/pull/350)) From a1042e9a5eb82d2547175b856144466e08df99e3 Mon Sep 17 00:00:00 2001 From: Serhii Snitsaruk Date: Tue, 9 Sep 2025 13:39:36 +0200 Subject: [PATCH 4/4] Assign `vars` directly --- .../java/io/sentry/godotplugin/SentryAndroidGodotPlugin.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/android_lib/src/main/java/io/sentry/godotplugin/SentryAndroidGodotPlugin.kt b/android_lib/src/main/java/io/sentry/godotplugin/SentryAndroidGodotPlugin.kt index ec9740c17..841e3020c 100644 --- a/android_lib/src/main/java/io/sentry/godotplugin/SentryAndroidGodotPlugin.kt +++ b/android_lib/src/main/java/io/sentry/godotplugin/SentryAndroidGodotPlugin.kt @@ -444,8 +444,7 @@ class SentryAndroidGodotPlugin(godot: Godot) : GodotPlugin(godot) { } if (frameData.containsKey("vars")) { - val variables = frameData["vars"] as? Dictionary - vars = variables + vars = frameData["vars"] as? Dictionary } }