{"record":{"id":"03b3bb1f1e9ec87e","repo":"theonedev/onedev","slug":"delta-length-pointer-smaller-than-source-text","errorCode":null,"errorMessage":"Delta length (${pointer}) smaller than source text length (${text1.length()}).","messagePattern":"Delta length \\((.+?)\\) smaller than source text length \\((.+?)\\)\\.","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/util/diff/DiffMatchPatch.java","lineNumber":1565,"sourceCode":"\t\t\t\t\t\ttext = text1.substring(pointer, pointer += n);\n\t\t\t\t\t} catch (StringIndexOutOfBoundsException e) {\n\t\t\t\t\t\tthrow new IllegalArgumentException(\"Delta length (\" + pointer\n\t\t\t\t\t\t\t\t+ \") larger than source text length (\" + text1.length() + \").\", e);\n\t\t\t\t\t}\n\t\t\t\t\tif (token.charAt(0) == '=') {\n\t\t\t\t\t\tdiffs.add(new Diff(Operation.EQUAL, text));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdiffs.add(new Diff(Operation.DELETE, text));\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t// Anything else is an error.\n\t\t\t\t\tthrow new IllegalArgumentException(\"Invalid diff operation in diff_fromDelta: \"\n\t\t\t\t\t\t\t+ token.charAt(0));\n\t\t\t}\n\t\t}\n\t\tif (pointer != text1.length()) {\n\t\t\tthrow new IllegalArgumentException(\"Delta length (\" + pointer\n\t\t\t\t\t+ \") smaller than source text length (\" + text1.length() + \").\");\n\t\t}\n\t\treturn diffs;\n\t}\n\n\n\t// MATCH FUNCTIONS\n\n\n\t/**\n\t * Locate the best instance of 'pattern' in 'text' near 'loc'. Returns -1 if\n\t * no match found.\n\t * \n\t * @param text The text to search.\n\t * @param pattern The pattern to search for.\n\t * @param loc The location to search around.\n\t * @return Best match index or -1.\n\t */","sourceCodeStart":1547,"sourceCodeEnd":1583,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/util/diff/DiffMatchPatch.java#L1547-L1583","documentation":"Final consistency check of diff_fromDelta: after consuming all tokens, pointer must equal text1.length(); a shorter pointer means the delta accounts for fewer characters than the source text contains, so delta and text are out of sync.","triggerScenarios":"Thrown at server-core/src/main/java/io/onedev/server/util/diff/DiffMatchPatch.java:1565 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Regenerate the delta from the exact text1 supplied.","Verify no text was truncated or altered between delta creation and parsing."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}