theonedev/onedev · error · IllegalArgumentException

Invalid diff operation in diff_fromDelta: ${token.charAt(0)}

Error message

Invalid diff operation in diff_fromDelta: ${token.charAt(0)}

What it means

diff_fromDelta only recognizes tokens beginning with '+', '-' or '='; any other leading character hits the default branch and raises this IllegalArgumentException naming the offending character, indicating a corrupt or foreign delta string.

Source

Thrown at server-core/src/main/java/io/onedev/server/util/diff/DiffMatchPatch.java:1560

						throw new IllegalArgumentException("Negative number in diff_fromDelta: "
								+ param);
					}
					String text;
					try {
						text = text1.substring(pointer, pointer += n);
					} catch (StringIndexOutOfBoundsException e) {
						throw new IllegalArgumentException("Delta length (" + pointer
								+ ") larger than source text length (" + text1.length() + ").", e);
					}
					if (token.charAt(0) == '=') {
						diffs.add(new Diff(Operation.EQUAL, text));
					} else {
						diffs.add(new Diff(Operation.DELETE, text));
					}
					break;
				default:
					// Anything else is an error.
					throw new IllegalArgumentException("Invalid diff operation in diff_fromDelta: "
							+ token.charAt(0));
			}
		}
		if (pointer != text1.length()) {
			throw new IllegalArgumentException("Delta length (" + pointer
					+ ") smaller than source text length (" + text1.length() + ").");
		}
		return diffs;
	}


	// MATCH FUNCTIONS


	/**
	 * Locate the best instance of 'pattern' in 'text' near 'loc'. Returns -1 if
	 * no match found.
	 * 

View on GitHub (pinned to d44925c47c)

Solutions

  1. Regenerate the delta using diff_toDelta.
  2. Sanitize the delta string so each token starts with a valid operation character.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server-core/src/main/java/io/onedev/server/util/diff/DiffMatchPatch.java:1560 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06). Data as JSON: /api/errors/1b6034ea7b009937. Report an issue: GitHub.