mirror of https://github.com/buggins/dlangide.git
fix crashes
This commit is contained in:
parent
fd570d2358
commit
b597326363
|
@ -1375,6 +1375,15 @@ struct StringAppender {
|
||||||
buf[len .. len + s.length] = s;
|
buf[len .. len + s.length] = s;
|
||||||
len += s.length;
|
len += s.length;
|
||||||
}
|
}
|
||||||
|
void append(dchar ch) {
|
||||||
|
if (len + 1 > buf.length) {
|
||||||
|
uint newsize = cast(uint)(buf.length * 2);
|
||||||
|
if (newsize < 128)
|
||||||
|
newsize = 128;
|
||||||
|
buf.length = newsize;
|
||||||
|
}
|
||||||
|
buf[len++] = ch;
|
||||||
|
}
|
||||||
void reset() {
|
void reset() {
|
||||||
len = 0;
|
len = 0;
|
||||||
}
|
}
|
||||||
|
@ -1781,20 +1790,19 @@ class Tokenizer
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Token processIdent() {
|
protected Token processIdent(dchar firstChar) {
|
||||||
_sharedIdentToken.setPos(_startLine, _startPos);
|
_sharedIdentToken.setPos(_startLine, _startPos);
|
||||||
_identAppender.reset();
|
_identAppender.reset();
|
||||||
int startPos = _startPos;
|
_identAppender.append(firstChar);
|
||||||
int endPos = _len;
|
for (; _pos < _len; ) {
|
||||||
for (int i = startPos + 1; i < _len; i++) {
|
dchar ch = _lineText[_pos];
|
||||||
dchar ch = _lineText[i];
|
|
||||||
if (!isIdentMiddleChar(ch)) {
|
if (!isIdentMiddleChar(ch)) {
|
||||||
endPos = i;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
_identAppender.append(ch);
|
||||||
|
_pos++;
|
||||||
}
|
}
|
||||||
_pos = endPos;
|
_sharedIdentToken.setText(_identAppender.get);
|
||||||
_sharedIdentToken.setText(_lineText[startPos .. endPos]);
|
|
||||||
return _sharedIdentToken;
|
return _sharedIdentToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2756,7 +2764,7 @@ class Tokenizer
|
||||||
return _sharedKeywordToken;
|
return _sharedKeywordToken;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return processIdent();
|
return processIdent(ch);
|
||||||
}
|
}
|
||||||
OpCode op = detectOp(ch);
|
OpCode op = detectOp(ch);
|
||||||
if (op != OpCode.NONE) {
|
if (op != OpCode.NONE) {
|
||||||
|
|
|
@ -649,8 +649,11 @@ class SimpleDSyntaxHighlighter : SyntaxHighlighter {
|
||||||
for (int i = tokenLine; i <= newLine; i++) {
|
for (int i = tokenLine; i <= newLine; i++) {
|
||||||
int start = i > tokenLine ? 0 : tokenPos;
|
int start = i > tokenLine ? 0 : tokenPos;
|
||||||
int end = i < newLine ? cast(int)lines[i].length : newPos;
|
int end = i < newLine ? cast(int)lines[i].length : newPos;
|
||||||
for (int j = start; j < end; j++)
|
for (int j = start; j < end; j++) {
|
||||||
_props[i][j] = category;
|
if (j < _props[i].length) {
|
||||||
|
_props[i][j] = category;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle token - convert to category
|
// handle token - convert to category
|
||||||
|
|
Loading…
Reference in New Issue