163 return NULL;
164 }
165 (*env)->SetObjectArrayElement(env, result, cnt, js);
166 if ((*env)->ExceptionCheck(env)) {
167 free(tab);
168 return NULL;
169 }
170 (*env)->DeleteLocalRef(env, js);
171 }
172 }
173 free(tab);
174 return result;
175 }
176
177 JNIEXPORT jobjectArray JNICALL Java_sun_security_smartcardio_PCSC_SCardListReaders
178 (JNIEnv *env, jclass thisClass, jlong jContext)
179 {
180 SCARDCONTEXT context = (SCARDCONTEXT)jContext;
181 LONG rv;
182 LPTSTR mszReaders;
183 DWORD size;
184 jobjectArray result;
185
186 dprintf1("-context: %x\n", context);
187 rv = CALL_SCardListReaders(context, NULL, NULL, &size);
188 if (handleRV(env, rv)) {
189 return NULL;
190 }
191 dprintf1("-size: %d\n", size);
192
193 mszReaders = malloc(size);
194 if (mszReaders == NULL) {
195 throwOutOfMemoryError(env, NULL);
196 return NULL;
197 }
198
199 rv = CALL_SCardListReaders(context, NULL, mszReaders, &size);
200 if (handleRV(env, rv)) {
201 free(mszReaders);
202 return NULL;
203 }
|
163 return NULL;
164 }
165 (*env)->SetObjectArrayElement(env, result, cnt, js);
166 if ((*env)->ExceptionCheck(env)) {
167 free(tab);
168 return NULL;
169 }
170 (*env)->DeleteLocalRef(env, js);
171 }
172 }
173 free(tab);
174 return result;
175 }
176
177 JNIEXPORT jobjectArray JNICALL Java_sun_security_smartcardio_PCSC_SCardListReaders
178 (JNIEnv *env, jclass thisClass, jlong jContext)
179 {
180 SCARDCONTEXT context = (SCARDCONTEXT)jContext;
181 LONG rv;
182 LPTSTR mszReaders;
183 DWORD size = 0;
184 jobjectArray result;
185
186 dprintf1("-context: %x\n", context);
187 rv = CALL_SCardListReaders(context, NULL, NULL, &size);
188 if (handleRV(env, rv)) {
189 return NULL;
190 }
191 dprintf1("-size: %d\n", size);
192
193 mszReaders = malloc(size);
194 if (mszReaders == NULL) {
195 throwOutOfMemoryError(env, NULL);
196 return NULL;
197 }
198
199 rv = CALL_SCardListReaders(context, NULL, mszReaders, &size);
200 if (handleRV(env, rv)) {
201 free(mszReaders);
202 return NULL;
203 }
|