{"record":{"id":"6003aa4fb54e610b","repo":"microg/GmsCore","slug":"not-yet-available","errorCode":null,"errorMessage":"Not yet available","messagePattern":"Not yet available","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"play-services-base/src/main/java/com/google/android/gms/common/data/DataHolder.java","lineNumber":211,"sourceCode":"                for (CursorWindow window : windows) {\n                    window.close();\n                }\n            }\n        }\n    }\n\n    /**\n     * Copies the String content in the given column at the provided position into a {@link CharArrayBuffer}.\n     * This will throw an {@link IllegalArgumentException} if the column does not exist, the\n     * position is invalid, or the data holder has been closed.\n     *\n     * @param column      The column to retrieve.\n     * @param row         The row to retrieve the data from.\n     * @param windowIndex Index of the cursor window to extract the data from.\n     * @param dataOut     The {@link CharArrayBuffer} to copy into.\n     */\n    public void copyToBuffer(String column, int row, int windowIndex, CharArrayBuffer dataOut) {\n        throw new RuntimeException(\"Not yet available\");\n    }\n\n    @SuppressWarnings(\"deprecation\")\n    private static CursorWindow[] createCursorWindows(Builder builder) {\n        if (builder.columns.length == 0) return new CursorWindow[0];\n        List<CursorWindow> windows = new ArrayList<CursorWindow>();\n        try {\n            CursorWindow current = null;\n            for (int rowIndex = 0; rowIndex < builder.rows.size(); rowIndex++) {\n                Map<String, Object> row = builder.rows.get(rowIndex);\n                if (current == null || !current.allocRow()) {\n                    current = new CursorWindow(false);\n                    current.setStartPosition(rowIndex);\n                    current.setNumColumns(builder.columns.length);\n                    windows.add(current);\n                    if (!current.allocRow()) {\n                        windows.remove(current);\n                        return windows.toArray(new CursorWindow[windows.size()]);","sourceCodeStart":193,"sourceCodeEnd":229,"githubUrl":"https://github.com/microg/GmsCore/blob/157c9d86ac46c195a86c2f15ab55c84036223f95/play-services-base/src/main/java/com/google/android/gms/common/data/DataHolder.java#L193-L229","documentation":"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.","triggerScenarios":"Thrown at play-services-base/src/main/java/com/google/android/gms/common/data/DataHolder.java:211 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the value with getString(index) and handle null before copying into the CharArrayBuffer","Verify the row and column indices are in bounds and the column holds a string","Ensure the DataHolder was fully populated from its cursor before reading"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"157c9d86ac46c195a86c2f15ab55c84036223f95","analyzedAt":"2026-09-06T17:27:33.892Z","contentChangedAt":"2026-09-06T17:27:33.892Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}