File tree Expand file tree Collapse file tree 2 files changed +18
-2
lines changed Expand file tree Collapse file tree 2 files changed +18
-2
lines changed Original file line number Diff line number Diff line change @@ -114,13 +114,15 @@ namespace jni
114114 }
115115
116116
117- inline void PushLocalFrame (JNIEnv& env, jint capacity)
117+ inline UniqueLocalFrame PushLocalFrame (JNIEnv& env, jint capacity)
118118 {
119119 CheckJavaExceptionThenErrorCode (env, env.PushLocalFrame (capacity));
120+ return UniqueLocalFrame (&env, LocalFrameDeleter ());
120121 }
121122
122- inline jobject* PopLocalFrame (JNIEnv& env, jobject* result = nullptr )
123+ inline jobject* PopLocalFrame (JNIEnv& env, UniqueLocalFrame&& frame, jobject* result = nullptr )
123124 {
125+ frame.release ();
124126 return CheckJavaException (env,
125127 Wrap<jobject*>(env.PopLocalFrame (Unwrap (result))));
126128 }
Original file line number Diff line number Diff line change 66
77namespace jni
88 {
9+ struct LocalFrameDeleter
10+ {
11+ void operator ()(JNIEnv* env) const
12+ {
13+ if (env)
14+ {
15+ env->PopLocalFrame (nullptr );
16+ }
17+ }
18+ };
19+
20+ using UniqueLocalFrame = std::unique_ptr< JNIEnv, LocalFrameDeleter >;
21+
22+
923 class GlobalRefDeleter
1024 {
1125 private:
You can’t perform that action at this time.
0 commit comments