Skip to content

Commit 4da105e

Browse files
committed
Improve macros for loading classes and static objects
Basically, we introduce an additional condition to both macros.
1 parent 0f87110 commit 4da105e

File tree

1 file changed

+18
-12
lines changed

1 file changed

+18
-12
lines changed

lib/ch_usi_si_seart_treesitter.h

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -184,20 +184,26 @@ extern "C" {
184184
#define _getClass(NAME) \
185185
env->FindClass(NAME)
186186

187-
#define _loadClass(VARIABLE, NAME) \
188-
{ \
189-
jclass local; \
190-
local = _getClass(NAME); \
191-
VARIABLE = (jclass)env->NewGlobalRef(local); \
192-
env->DeleteLocalRef(local); \
187+
#define _loadClass(VARIABLE, NAME) \
188+
{ \
189+
jclass local = _getClass(NAME); \
190+
if (local != NULL) { \
191+
VARIABLE = (jclass)env->NewGlobalRef(local); \
192+
env->DeleteLocalRef(local); \
193+
} else { \
194+
VARIABLE = NULL; \
195+
} \
193196
}
194197

195-
#define _loadStaticObject(VARIABLE, CLASS, FIELD) \
196-
{ \
197-
jobject local; \
198-
local = env->GetStaticObjectField(CLASS, FIELD); \
199-
VARIABLE = env->NewGlobalRef(local); \
200-
env->DeleteLocalRef(local); \
198+
#define _loadStaticObject(VARIABLE, CLASS, FIELD) \
199+
{ \
200+
jobject local = env->GetStaticObjectField(CLASS, FIELD); \
201+
if (local != NULL) { \
202+
VARIABLE = env->NewGlobalRef(local); \
203+
env->DeleteLocalRef(local); \
204+
} else { \
205+
VARIABLE = NULL; \
206+
} \
201207
}
202208

203209
#define _unload(VARIABLE) \

0 commit comments

Comments
 (0)