@@ -16,8 +16,8 @@ void Document::init(string filename) {
1616 lineBuffer = (char **) malloc (lineCount * sizeof (char *));
1717
1818 for (int i = 0 ; i < lineCount; i++) {
19- lineBuffer[i] = (char *) malloc (80 * sizeof (char ));
20- memset (lineBuffer[i], ' ' , 80 * sizeof (char ));
19+ lineBuffer[i] = (char *) malloc (LINE_LIMIT * sizeof (char ));
20+ memset (lineBuffer[i], ' ' , LINE_LIMIT * sizeof (char ));
2121 }
2222
2323 // reset cursor
@@ -69,8 +69,8 @@ void Document::createLine(int lineNum, int numLines) {
6969
7070 // allocate memory for empty lines
7171 for (int i = prevCount; i < lineCount; i++) {
72- lineBuffer[i] = (char *) malloc (80 * sizeof (char ));
73- memset (lineBuffer[i], ' ' , 80 * sizeof (char ));
72+ lineBuffer[i] = (char *) malloc (LINE_LIMIT * sizeof (char ));
73+ memset (lineBuffer[i], ' ' , LINE_LIMIT * sizeof (char ));
7474 }
7575
7676 // shift any existing lines down
@@ -81,18 +81,20 @@ void Document::createLine(int lineNum, int numLines) {
8181
8282void Document::shiftLineDown (int lineNum) {
8383 lineBuffer[lineNum + 1 ] = lineBuffer[lineNum];
84- memset (lineBuffer[lineNum], ' ' , 80 * sizeof (char ));
84+ memset (lineBuffer[lineNum], ' ' , LINE_LIMIT * sizeof (char ));
8585}
8686
8787void Document::insertPos (int lineNum, int charNum, char c) {
8888 if (isValid (c))
89- lineBuffer[lineNum][charNum] = c;
89+ for (int i = LINE_LIMIT ; i >= charNum; i--)
90+ lineBuffer[lineNum][i + 1 ] = lineBuffer[lineNum][i];
91+ lineBuffer[lineNum][charNum] = c;
9092}
9193
9294void Document::deletePos (int lineNum, int charNum) {
93- for (int i = charNum+ 1 ; i < 80 ; i++)
94- lineBuffer[lineNum][i- 1 ] = lineBuffer[lineNum][i];
95- lineBuffer[lineNum][80 ] = ' ' ;
95+ for (int i = charNum + 1 ; i < LINE_LIMIT ; i++)
96+ lineBuffer[lineNum][i - 1 ] = lineBuffer[lineNum][i];
97+ lineBuffer[lineNum][LINE_LIMIT ] = ' ' ;
9698}
9799
98100
0 commit comments