microg/GmsCore · error · RuntimeException

Not yet available

Error message

Not yet available

What it means

Thrown in DataHolder.copyToBuffer when a String value is requested from a cursor window but no value is present at that row/column position — a sentinel for a not-yet-populated string value rather than a user-input error.

Source

Thrown at play-services-base/src/main/java/com/google/android/gms/common/data/DataHolder.java:211

                for (CursorWindow window : windows) {
                    window.close();
                }
            }
        }
    }

    /**
     * Copies the String content in the given column at the provided position into a {@link CharArrayBuffer}.
     * This will throw an {@link IllegalArgumentException} if the column does not exist, the
     * position is invalid, or the data holder has been closed.
     *
     * @param column      The column to retrieve.
     * @param row         The row to retrieve the data from.
     * @param windowIndex Index of the cursor window to extract the data from.
     * @param dataOut     The {@link CharArrayBuffer} to copy into.
     */
    public void copyToBuffer(String column, int row, int windowIndex, CharArrayBuffer dataOut) {
        throw new RuntimeException("Not yet available");
    }

    @SuppressWarnings("deprecation")
    private static CursorWindow[] createCursorWindows(Builder builder) {
        if (builder.columns.length == 0) return new CursorWindow[0];
        List<CursorWindow> windows = new ArrayList<CursorWindow>();
        try {
            CursorWindow current = null;
            for (int rowIndex = 0; rowIndex < builder.rows.size(); rowIndex++) {
                Map<String, Object> row = builder.rows.get(rowIndex);
                if (current == null || !current.allocRow()) {
                    current = new CursorWindow(false);
                    current.setStartPosition(rowIndex);
                    current.setNumColumns(builder.columns.length);
                    windows.add(current);
                    if (!current.allocRow()) {
                        windows.remove(current);
                        return windows.toArray(new CursorWindow[windows.size()]);

View on GitHub (pinned to 157c9d86ac)

Solutions

  1. Check the value with getString(index) and handle null before copying into the CharArrayBuffer
  2. Verify the row and column indices are in bounds and the column holds a string
  3. Ensure the DataHolder was fully populated from its cursor before reading
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at play-services-base/src/main/java/com/google/android/gms/common/data/DataHolder.java:211 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of microg/GmsCore@157c9d86ac (2026-09-06). Data as JSON: /api/errors/6003aa4fb54e610b. Report an issue: GitHub.