aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ex_cmds.c13
-rw-r--r--src/memory.c16
-rw-r--r--src/memory.h1
-rw-r--r--src/misc1.c8
-rw-r--r--src/ops.c108
5 files changed, 45 insertions, 101 deletions
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 2e76ff5e75..8b3a2a4bfd 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -3861,10 +3861,6 @@ void do_sub(exarg_T *eap)
if (sub_firstline == NULL) {
sub_firstline = vim_strsave(ml_get(sub_firstlnum));
- if (sub_firstline == NULL) {
- vim_free(new_start);
- goto outofmem;
- }
}
/* Save the line number of the last change for the final
@@ -4154,8 +4150,7 @@ void do_sub(exarg_T *eap)
* too many calls to alloc()/free()).
*/
new_start_len = needed_len + 50;
- if ((new_start = alloc_check(new_start_len)) == NULL)
- goto outofmem;
+ new_start = (char_u *)xmalloc((size_t)new_start_len);
*new_start = NUL;
new_end = new_start;
} else {
@@ -4168,10 +4163,7 @@ void do_sub(exarg_T *eap)
needed_len += len;
if (needed_len > (int)new_start_len) {
new_start_len = needed_len + 50;
- if ((p1 = alloc_check(new_start_len)) == NULL) {
- vim_free(new_start);
- goto outofmem;
- }
+ p1 = (char_u *) xmalloc((size_t)new_start_len);
memmove(p1, new_start, (size_t)(len + 1));
vim_free(new_start);
new_start = p1;
@@ -4388,7 +4380,6 @@ skip:
changed_lines(first_line, 0, last_line - i, i);
}
-outofmem:
vim_free(sub_firstline); /* may have to free allocated copy of the line */
/* ":s/pat//n" doesn't move the cursor */
diff --git a/src/memory.c b/src/memory.c
index 01b7543716..5a5a22aa1e 100644
--- a/src/memory.c
+++ b/src/memory.c
@@ -73,22 +73,6 @@ char_u *alloc_clear(unsigned size)
}
/*
- * alloc() with check for maximum line length
- */
-char_u *alloc_check(unsigned size)
-{
-#if !defined(UNIX) && !defined(__EMX__)
- if (sizeof(int) == 2 && size > 0x7fff) {
- /* Don't hide this message */
- emsg_silent = 0;
- EMSG(_("E340: Line is becoming too long"));
- return NULL;
- }
-#endif
- return lalloc((long_u)size, TRUE);
-}
-
-/*
* Allocate memory like lalloc() and set all bytes to zero.
*/
char_u *lalloc_clear(long_u size, int message)
diff --git a/src/memory.h b/src/memory.h
index 324670115b..4231ce8435 100644
--- a/src/memory.h
+++ b/src/memory.h
@@ -7,7 +7,6 @@
char_u *alloc(unsigned size) FUNC_ATTR_MALLOC FUNC_ATTR_ALLOC_SIZE(1);
char_u *alloc_clear(unsigned size) FUNC_ATTR_MALLOC FUNC_ATTR_ALLOC_SIZE(1);
-char_u *alloc_check(unsigned size) FUNC_ATTR_MALLOC FUNC_ATTR_ALLOC_SIZE(1);
char_u *lalloc_clear(long_u size, int message) FUNC_ATTR_MALLOC FUNC_ATTR_ALLOC_SIZE(1);
/// malloc() wrapper
diff --git a/src/misc1.c b/src/misc1.c
index e83314c156..180c658064 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -1510,9 +1510,7 @@ void ins_char_bytes(char_u *buf, int charlen)
}
}
- newp = alloc_check((unsigned)(linelen + newlen - oldlen));
- if (newp == NULL)
- return;
+ newp = (char_u *) xmalloc((size_t)(linelen + newlen - oldlen));
/* Copy bytes before the cursor. */
if (col > 0)
@@ -1580,9 +1578,7 @@ void ins_str(char_u *s)
oldp = ml_get(lnum);
oldlen = (int)STRLEN(oldp);
- newp = alloc_check((unsigned)(oldlen + newlen + 1));
- if (newp == NULL)
- return;
+ newp = (char_u *) xmalloc((size_t)(oldlen + newlen + 1));
if (col > 0)
memmove(newp, oldp, (size_t)col);
memmove(newp + col, s, (size_t)newlen);
diff --git a/src/ops.c b/src/ops.c
index 74f05b5cb2..44c8c6f134 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -383,9 +383,7 @@ static void shift_block(oparg_T *oap, int amount)
/* if we're splitting a TAB, allow for it */
bd.textcol -= bd.pre_whitesp_c - (bd.startspaces != 0);
len = (int)STRLEN(bd.textstart) + 1;
- newp = alloc_check((unsigned)(bd.textcol + i + j + len));
- if (newp == NULL)
- return;
+ newp = (char_u *) xmalloc((size_t)(bd.textcol + i + j + len));
memset(newp, NUL, (size_t)(bd.textcol + i + j + len));
memmove(newp, oldp, (size_t)bd.textcol);
copy_chars(newp + bd.textcol, (size_t)i, TAB);
@@ -469,9 +467,7 @@ static void shift_block(oparg_T *oap, int amount)
+ fill
+ (unsigned)STRLEN(non_white) + 1;
- newp = alloc_check(new_line_len);
- if (newp == NULL)
- return;
+ newp = (char_u *) xmalloc((size_t)(new_line_len));
memmove(newp, oldp, (size_t)(verbatim_copy_end - oldp));
copy_spaces(newp + (verbatim_copy_end - oldp), (size_t)fill);
STRMOVE(newp + (verbatim_copy_end - oldp) + fill, non_white);
@@ -531,9 +527,7 @@ static void block_insert(oparg_T *oap, char_u *s, int b_insert, struct block_def
}
}
- newp = alloc_check((unsigned)(STRLEN(oldp)) + s_len + count + 1);
- if (newp == NULL)
- continue;
+ newp = (char_u *) xmalloc((size_t)(STRLEN(oldp) + s_len + count + 1));
/* copy up to shifted part */
memmove(newp, oldp, (size_t)(offset));
@@ -1496,9 +1490,7 @@ int op_delete(oparg_T *oap)
*/
n = bd.textlen - bd.startspaces - bd.endspaces;
oldp = ml_get(lnum);
- newp = alloc_check((unsigned)STRLEN(oldp) + 1 - n);
- if (newp == NULL)
- continue;
+ newp = (char_u *) xmalloc((size_t)(STRLEN(oldp) + 1 - n));
/* copy up to deleted part */
memmove(newp, oldp, (size_t)bd.textcol);
/* insert spaces */
@@ -1778,9 +1770,7 @@ int op_replace(oparg_T *oap, int c)
oldp = ml_get_curline();
oldlen = STRLEN(oldp);
- newp = alloc_check((unsigned)oldlen + 1 + n);
- if (newp == NULL)
- continue;
+ newp = (char_u *) xmalloc((size_t)(oldlen + 1 + n));
memset(newp, NUL, (size_t)(oldlen + 1 + n));
/* copy up to deleted part */
memmove(newp, oldp, (size_t)bd.textcol);
@@ -1804,10 +1794,8 @@ int op_replace(oparg_T *oap, int c)
}
} else {
/* Replacing with \r or \n means splitting the line. */
- after_p = alloc_check(
- (unsigned)(oldlen + 1 + n - STRLEN(newp)));
- if (after_p != NULL)
- STRMOVE(after_p, oldp);
+ after_p = (char_u *) xmalloc((size_t)(oldlen + 1 + n - STRLEN(newp)));
+ STRMOVE(after_p, oldp);
}
/* replace the line */
ml_replace(curwin->w_cursor.lnum, newp, FALSE);
@@ -2279,43 +2267,37 @@ int op_change(oparg_T *oap)
if (ins_len > 0) {
/* Subsequent calls to ml_get() flush the firstline data - take a
* copy of the inserted text. */
- if ((ins_text = alloc_check((unsigned)(ins_len + 1))) != NULL) {
- vim_strncpy(ins_text, firstline + bd.textcol, (size_t)ins_len);
- for (linenr = oap->start.lnum + 1; linenr <= oap->end.lnum;
- linenr++) {
- block_prep(oap, &bd, linenr, TRUE);
- if (!bd.is_short || virtual_op) {
- pos_T vpos;
-
- /* If the block starts in virtual space, count the
- * initial coladd offset as part of "startspaces" */
- if (bd.is_short) {
- vpos.lnum = linenr;
- (void)getvpos(&vpos, oap->start_vcol);
- } else
- vpos.coladd = 0;
- oldp = ml_get(linenr);
- newp = alloc_check((unsigned)(STRLEN(oldp)
- + vpos.coladd
- + ins_len + 1));
- if (newp == NULL)
- continue;
- /* copy up to block start */
- memmove(newp, oldp, (size_t)bd.textcol);
- offset = bd.textcol;
- copy_spaces(newp + offset, (size_t)vpos.coladd);
- offset += vpos.coladd;
- memmove(newp + offset, ins_text, (size_t)ins_len);
- offset += ins_len;
- oldp += bd.textcol;
- STRMOVE(newp + offset, oldp);
- ml_replace(linenr, newp, FALSE);
- }
+ ins_text = (char_u *) xmalloc((size_t)(ins_len + 1));
+ vim_strncpy(ins_text, firstline + bd.textcol, (size_t)ins_len);
+ for (linenr = oap->start.lnum + 1; linenr <= oap->end.lnum;
+ linenr++) {
+ block_prep(oap, &bd, linenr, TRUE);
+ if (!bd.is_short || virtual_op) {
+ pos_T vpos;
+
+ /* If the block starts in virtual space, count the
+ * initial coladd offset as part of "startspaces" */
+ if (bd.is_short) {
+ vpos.lnum = linenr;
+ (void)getvpos(&vpos, oap->start_vcol);
+ } else
+ vpos.coladd = 0;
+ oldp = ml_get(linenr);
+ newp = (char_u *) xmalloc((size_t)(STRLEN(oldp) + vpos.coladd + ins_len + 1));
+ /* copy up to block start */
+ memmove(newp, oldp, (size_t)bd.textcol);
+ offset = bd.textcol;
+ copy_spaces(newp + offset, (size_t)vpos.coladd);
+ offset += vpos.coladd;
+ memmove(newp + offset, ins_text, (size_t)ins_len);
+ offset += ins_len;
+ oldp += bd.textcol;
+ STRMOVE(newp + offset, oldp);
+ ml_replace(linenr, newp, FALSE);
}
- check_cursor();
-
- changed_lines(oap->start.lnum + 1, 0, oap->end.lnum + 1, 0L);
}
+ check_cursor();
+ changed_lines(oap->start.lnum + 1, 0, oap->end.lnum + 1, 0L);
vim_free(ins_text);
}
}
@@ -2920,9 +2902,7 @@ do_put (
/* insert the new text */
totlen = count * (yanklen + spaces) + bd.startspaces + bd.endspaces;
- newp = alloc_check((unsigned)totlen + oldlen + 1);
- if (newp == NULL)
- break;
+ newp = (char_u *) xmalloc((size_t)(totlen + oldlen + 1));
/* copy part up to cursor to new line */
ptr = newp;
memmove(ptr, oldp, (size_t)bd.textcol);
@@ -3018,9 +2998,7 @@ do_put (
totlen = count * yanklen;
if (totlen > 0) {
oldp = ml_get(lnum);
- newp = alloc_check((unsigned)(STRLEN(oldp) + totlen + 1));
- if (newp == NULL)
- goto end; /* alloc() gave an error message */
+ newp = (char_u *) xmalloc((size_t)(STRLEN(oldp) + totlen + 1));
memmove(newp, oldp, (size_t)col);
ptr = newp + col;
for (i = 0; i < count; ++i) {
@@ -3063,9 +3041,7 @@ do_put (
lnum = new_cursor.lnum;
ptr = ml_get(lnum) + col;
totlen = (int)STRLEN(y_array[y_size - 1]);
- newp = alloc_check((unsigned)(STRLEN(ptr) + totlen + 1));
- if (newp == NULL)
- goto error;
+ newp = (char_u *) xmalloc((size_t)(STRLEN(ptr) + totlen + 1));
STRCPY(newp, y_array[y_size - 1]);
STRCAT(newp, ptr);
/* insert second line */
@@ -3073,9 +3049,7 @@ do_put (
vim_free(newp);
oldp = ml_get(lnum);
- newp = alloc_check((unsigned)(col + yanklen + 1));
- if (newp == NULL)
- goto error;
+ newp = (char_u *) xmalloc((size_t)(col + yanklen + 1));
/* copy first part of line */
memmove(newp, oldp, (size_t)col);
/* append to first line */
@@ -3569,7 +3543,7 @@ int do_join(long count, int insert_space, int save_undo, int use_formatoptions)
col = sumsize - currsize - spaces[count - 1];
/* allocate the space for the new line */
- newp = alloc_check((unsigned)(sumsize + 1));
+ newp = (char_u *) xmalloc((size_t)(sumsize + 1));
cend = newp + sumsize;
*cend = 0;