JNIEXPORT void JNICALL Java_com_uber_h3core_NativeMethods_gridDiskDistances()

in src/main/c/h3-java/src/jniapi.c [375:402]


JNIEXPORT void JNICALL Java_com_uber_h3core_NativeMethods_gridDiskDistances(
    JNIEnv *env, jobject thiz, jlong h3, jint k, jlongArray results,
    jintArray distances) {
    H3Error err = E_SUCCESS;
    bool isOom = false;
    jlong *resultsElements = (**env).GetLongArrayElements(env, results, 0);
    if (resultsElements != NULL) {
        jint *distancesElements =
            (**env).GetIntArrayElements(env, distances, 0);
        if (distancesElements != NULL) {
            // if sz is too small, bad things will happen
            err = gridDiskDistances(h3, k, resultsElements, distancesElements);

            (**env).ReleaseLongArrayElements(env, results, resultsElements, 0);
        } else {
            isOom = true;
        }
        (**env).ReleaseIntArrayElements(env, distances, distancesElements, 0);
    } else {
        isOom = true;
    }

    if (isOom) {
        ThrowOutOfMemoryError(env);
    } else if (err) {
        ThrowH3Exception(env, err);
    }
}