@@ -69,10 +69,12 @@ jlong nativeAssTrackInit(JNIEnv* env, jclass clazz, jlong ass) {
6969}
7070
7171jint nativeAssTrackGetWidth (JNIEnv * env , jclass clazz , jlong track ) {
72+ if (!track ) return 0 ;
7273 return ((ASS_Track * ) track )-> PlayResX ;
7374}
7475
7576jobjectArray nativeAssTrackGetEvents (JNIEnv * env , jclass clazz , jlong track ) {
77+ if (!track ) return NULL ;
7678 jclass eventClass = (* env )-> FindClass (env , "io/github/peerless2012/ass/AssEvent" );
7779 if (eventClass == NULL ) {
7880 return NULL ;
@@ -121,6 +123,7 @@ jobjectArray nativeAssTrackGetEvents(JNIEnv* env, jclass clazz, jlong track) {
121123}
122124
123125void nativeAssTrackClearEvents (JNIEnv * env , jclass clazz , jlong track ) {
126+ if (!track ) return ;
124127 ASS_Track * tr = (ASS_Track * ) track ;
125128 for (int i = 0 ; i < tr -> n_events ; i ++ ) {
126129 ass_free_event (tr , i );
@@ -129,10 +132,12 @@ void nativeAssTrackClearEvents(JNIEnv* env, jclass clazz, jlong track) {
129132}
130133
131134jint nativeAssTrackGetHeight (JNIEnv * env , jclass clazz , jlong track ) {
135+ if (!track ) return 0 ;
132136 return ((ASS_Track * ) track )-> PlayResY ;
133137}
134138
135139void nativeAssTrackReadBuffer (JNIEnv * env , jclass clazz , jlong track , jbyteArray buffer , jint offset , jint length ) {
140+ if (!track ) return ;
136141 jboolean isCopy ;
137142 jbyte * elements = (* env )-> GetByteArrayElements (env , buffer , & isCopy );
138143 if (elements == NULL ) {
@@ -143,6 +148,7 @@ void nativeAssTrackReadBuffer(JNIEnv* env, jclass clazz, jlong track, jbyteArray
143148}
144149
145150void nativeAssTrackReadChunk (JNIEnv * env , jclass clazz , jlong track , jlong start , jlong duration , jbyteArray buffer , jint offset , jint length ) {
151+ if (!track ) return ;
146152 jboolean isCopy ;
147153 jbyte * elements = (* env )-> GetByteArrayElements (env , buffer , & isCopy );
148154 if (elements == NULL ) {
@@ -153,6 +159,7 @@ void nativeAssTrackReadChunk(JNIEnv* env, jclass clazz, jlong track, jlong start
153159}
154160
155161void nativeAssTrackDeinit (JNIEnv * env , jclass clazz , jlong track ) {
162+ if (!track ) return ;
156163 ass_free_track ((ASS_Track * ) track );
157164}
158165
@@ -175,18 +182,22 @@ jlong nativeAssRenderInit(JNIEnv* env, jclass clazz, jlong ass) {
175182}
176183
177184void nativeAssRenderSetFontScale (JNIEnv * env , jclass clazz , jlong render , jfloat scale ) {
185+ if (!render ) return ;
178186 ass_set_font_scale ((ASS_Renderer * ) render , scale );
179187}
180188
181189void nativeAssRenderSetCacheLimit (JNIEnv * env , jclass clazz , jlong render , jint glyphMax , jint bitmapMaxSize ) {
190+ if (!render ) return ;
182191 ass_set_cache_limits ((ASS_Renderer * ) render , glyphMax , bitmapMaxSize );
183192}
184193
185194void nativeAssRenderSetFrameSize (JNIEnv * env , jclass clazz , jlong render , jint width , jint height ) {
195+ if (!render ) return ;
186196 ass_set_frame_size ((ASS_Renderer * ) render , width , height );
187197}
188198
189199void nativeAssRenderSetStorageSize (JNIEnv * env , jclass clazz , jlong render , jint width , jint height ) {
200+ if (!render ) return ;
190201 ass_set_storage_size ((ASS_Renderer * ) render , width , height );
191202}
192203
@@ -294,6 +305,7 @@ static int count_ass_images(ASS_Image *images) {
294305}
295306
296307jobject nativeAssRenderFrame (JNIEnv * env , jclass clazz , jlong render , jlong track , jlong time , jint type ) {
308+ if (!render || !track ) return NULL ;
297309 int changed ;
298310 ASS_Image * image = ass_render_frame ((ASS_Renderer * ) render , (ASS_Track * ) track , time , & changed );
299311 if (image == NULL ) {
0 commit comments