From ed187e0c50878c7e7203e94e0b3cc5c2f5112324 Mon Sep 17 00:00:00 2001 From: drpriver Date: Sat, 30 Sep 2023 15:40:21 -0700 Subject: [PATCH] Fix out of bounds access in complete.d when there is no paren. `goBackToOpenParen` can return size_t.max, which the calling code in `getCalltipHint` did not handle (and accidentally returns via an `out` parameter). Check for this case so we don't get an array length error. --- src/dcd/server/autocomplete/complete.d | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/dcd/server/autocomplete/complete.d b/src/dcd/server/autocomplete/complete.d index cf3825c..6622890 100644 --- a/src/dcd/server/autocomplete/complete.d +++ b/src/dcd/server/autocomplete/complete.d @@ -361,7 +361,12 @@ CalltipHint getCalltipHint(T)(T beforeTokens, out size_t parenIndex) // evaluate at comma case if (beforeTokens.isComma) { - parenIndex = beforeTokens.goBackToOpenParen; + size_t tmp = beforeTokens.goBackToOpenParen; + if(tmp == size_t.max){ + return CalltipHint.regularArguments; + } + parenIndex = tmp; + // check if we are actually a "!(" if (beforeTokens[0 .. parenIndex].isTemplateBangParen) {