184 {
185 char buf[256];
186 size_t n = getLastErrorString(buf, sizeof(buf));
187 size_t messagelen = message == NULL ? 0 : strlen(message);
188
189 if (n > 0) {
190 jstring s = JNU_NewStringPlatform(env, buf);
191 if (s != NULL) {
192 jobject x = NULL;
193 if (messagelen) {
194 jstring s2 = NULL;
195 size_t messageextlen = messagelen + 4;
196 char *str1 = (char *)malloc((messageextlen) * sizeof(char));
197 if (str1 == 0) {
198 JNU_ThrowOutOfMemoryError(env, 0);
199 return;
200 }
201 jio_snprintf(str1, messageextlen, " (%s)", message);
202 s2 = (*env)->NewStringUTF(env, str1);
203 free(str1);
204 if (s2 != NULL) {
205 jstring s3 = JNU_CallMethodByName(
206 env, NULL, s, "concat",
207 "(Ljava/lang/String;)Ljava/lang/String;",
208 s2).l;
209 (*env)->DeleteLocalRef(env, s2);
210 if (s3 != NULL) {
211 (*env)->DeleteLocalRef(env, s);
212 s = s3;
213 }
214 }
215 }
216 x = JNU_NewObjectByName(env, name, "(Ljava/lang/String;)V", s);
217 if (x != NULL) {
218 (*env)->Throw(env, x);
219 }
220 }
221 }
222
223 if (!(*env)->ExceptionOccurred(env)) {
224 if (messagelen) {
225 JNU_ThrowByName(env, name, message);
226 } else {
227 JNU_ThrowByName(env, name, "no further information");
228 }
229 }
|
184 {
185 char buf[256];
186 size_t n = getLastErrorString(buf, sizeof(buf));
187 size_t messagelen = message == NULL ? 0 : strlen(message);
188
189 if (n > 0) {
190 jstring s = JNU_NewStringPlatform(env, buf);
191 if (s != NULL) {
192 jobject x = NULL;
193 if (messagelen) {
194 jstring s2 = NULL;
195 size_t messageextlen = messagelen + 4;
196 char *str1 = (char *)malloc((messageextlen) * sizeof(char));
197 if (str1 == 0) {
198 JNU_ThrowOutOfMemoryError(env, 0);
199 return;
200 }
201 jio_snprintf(str1, messageextlen, " (%s)", message);
202 s2 = (*env)->NewStringUTF(env, str1);
203 free(str1);
204 JNU_CHECK_EXCEPTION(env);
205 if (s2 != NULL) {
206 jstring s3 = JNU_CallMethodByName(
207 env, NULL, s, "concat",
208 "(Ljava/lang/String;)Ljava/lang/String;",
209 s2).l;
210 (*env)->DeleteLocalRef(env, s2);
211 JNU_CHECK_EXCEPTION(env);
212 if (s3 != NULL) {
213 (*env)->DeleteLocalRef(env, s);
214 s = s3;
215 }
216 }
217 }
218 x = JNU_NewObjectByName(env, name, "(Ljava/lang/String;)V", s);
219 if (x != NULL) {
220 (*env)->Throw(env, x);
221 }
222 }
223 }
224
225 if (!(*env)->ExceptionOccurred(env)) {
226 if (messagelen) {
227 JNU_ThrowByName(env, name, message);
228 } else {
229 JNU_ThrowByName(env, name, "no further information");
230 }
231 }
|