59 finishedID = (*env)->GetFieldID(env, cls, "finished", "Z");
60 CHECK_NULL(finishedID);
61 bufID = (*env)->GetFieldID(env, cls, "buf", "[B");
62 CHECK_NULL(bufID);
63 offID = (*env)->GetFieldID(env, cls, "off", "I");
64 CHECK_NULL(offID);
65 lenID = (*env)->GetFieldID(env, cls, "len", "I");
66 CHECK_NULL(lenID);
67 }
68
69 JNIEXPORT jlong JNICALL
70 Java_java_util_zip_Deflater_init(JNIEnv *env, jclass cls, jint level,
71 jint strategy, jboolean nowrap)
72 {
73 z_stream *strm = calloc(1, sizeof(z_stream));
74
75 if (strm == 0) {
76 JNU_ThrowOutOfMemoryError(env, 0);
77 return jlong_zero;
78 } else {
79 char *msg;
80 switch (deflateInit2(strm, level, Z_DEFLATED,
81 nowrap ? -MAX_WBITS : MAX_WBITS,
82 DEF_MEM_LEVEL, strategy)) {
83 case Z_OK:
84 return ptr_to_jlong(strm);
85 case Z_MEM_ERROR:
86 free(strm);
87 JNU_ThrowOutOfMemoryError(env, 0);
88 return jlong_zero;
89 case Z_STREAM_ERROR:
90 free(strm);
91 JNU_ThrowIllegalArgumentException(env, 0);
92 return jlong_zero;
93 default:
94 msg = strm->msg;
95 free(strm);
96 JNU_ThrowInternalError(env, msg);
97 return jlong_zero;
98 }
99 }
100 }
101
102 JNIEXPORT void JNICALL
103 Java_java_util_zip_Deflater_setDictionary(JNIEnv *env, jclass cls, jlong addr,
104 jarray b, jint off, jint len)
105 {
106 Bytef *buf = (*env)->GetPrimitiveArrayCritical(env, b, 0);
107 int res;
108 if (buf == 0) {/* out of memory */
109 return;
110 }
111 res = deflateSetDictionary((z_stream *)jlong_to_ptr(addr), buf + off, len);
112 (*env)->ReleasePrimitiveArrayCritical(env, b, buf, 0);
113 switch (res) {
114 case Z_OK:
|
59 finishedID = (*env)->GetFieldID(env, cls, "finished", "Z");
60 CHECK_NULL(finishedID);
61 bufID = (*env)->GetFieldID(env, cls, "buf", "[B");
62 CHECK_NULL(bufID);
63 offID = (*env)->GetFieldID(env, cls, "off", "I");
64 CHECK_NULL(offID);
65 lenID = (*env)->GetFieldID(env, cls, "len", "I");
66 CHECK_NULL(lenID);
67 }
68
69 JNIEXPORT jlong JNICALL
70 Java_java_util_zip_Deflater_init(JNIEnv *env, jclass cls, jint level,
71 jint strategy, jboolean nowrap)
72 {
73 z_stream *strm = calloc(1, sizeof(z_stream));
74
75 if (strm == 0) {
76 JNU_ThrowOutOfMemoryError(env, 0);
77 return jlong_zero;
78 } else {
79 char *msg = 0;
80 switch (deflateInit2(strm, level, Z_DEFLATED,
81 nowrap ? -MAX_WBITS : MAX_WBITS,
82 DEF_MEM_LEVEL, strategy)) {
83 case Z_OK:
84 return ptr_to_jlong(strm);
85 case Z_MEM_ERROR:
86 free(strm);
87 JNU_ThrowOutOfMemoryError(env, 0);
88 return jlong_zero;
89 case Z_STREAM_ERROR:
90 free(strm);
91 JNU_ThrowIllegalArgumentException(env, 0);
92 return jlong_zero;
93 case Z_VERSION_ERROR:
94 msg = "Incompatible zlib version";
95 /* intentionally no break */
96 default:
97 if (msg == 0) {
98 msg = strm->msg;
99 }
100 free(strm);
101 JNU_ThrowInternalError(env, msg);
102 return jlong_zero;
103 }
104 }
105 }
106
107 JNIEXPORT void JNICALL
108 Java_java_util_zip_Deflater_setDictionary(JNIEnv *env, jclass cls, jlong addr,
109 jarray b, jint off, jint len)
110 {
111 Bytef *buf = (*env)->GetPrimitiveArrayCritical(env, b, 0);
112 int res;
113 if (buf == 0) {/* out of memory */
114 return;
115 }
116 res = deflateSetDictionary((z_stream *)jlong_to_ptr(addr), buf + off, len);
117 (*env)->ReleasePrimitiveArrayCritical(env, b, buf, 0);
118 switch (res) {
119 case Z_OK:
|