mirror of
https://github.com/neovim/neovim.git
synced 2025-09-10 13:28:19 +00:00
No OOM in vim_strnsave_up()
And some cleanup in strsave_up()
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
#include "nvim/ex_docmd.h"
|
#include "nvim/ex_docmd.h"
|
||||||
#include "nvim/ex_getln.h"
|
#include "nvim/ex_getln.h"
|
||||||
#include "nvim/fileio.h"
|
#include "nvim/fileio.h"
|
||||||
|
#include "nvim/func_attr.h"
|
||||||
#include "nvim/fold.h"
|
#include "nvim/fold.h"
|
||||||
#include "nvim/getchar.h"
|
#include "nvim/getchar.h"
|
||||||
#include "nvim/mark.h"
|
#include "nvim/mark.h"
|
||||||
@@ -214,11 +215,9 @@ char_u *vim_strsave_up(char_u *string)
|
|||||||
* Like vim_strnsave(), but make all characters uppercase.
|
* Like vim_strnsave(), but make all characters uppercase.
|
||||||
* This uses ASCII lower-to-upper case translation, language independent.
|
* This uses ASCII lower-to-upper case translation, language independent.
|
||||||
*/
|
*/
|
||||||
char_u *vim_strnsave_up(char_u *string, int len)
|
char_u *vim_strnsave_up(char_u *string, int len) FUNC_ATTR_NONNULL_RET
|
||||||
{
|
{
|
||||||
char_u *p1;
|
char_u *p1 = vim_strnsave(string, len);
|
||||||
|
|
||||||
p1 = vim_strnsave(string, len);
|
|
||||||
vim_strup(p1);
|
vim_strup(p1);
|
||||||
return p1;
|
return p1;
|
||||||
}
|
}
|
||||||
@@ -251,19 +250,16 @@ char_u *strup_save(char_u *orig)
|
|||||||
int l;
|
int l;
|
||||||
|
|
||||||
if (enc_utf8) {
|
if (enc_utf8) {
|
||||||
int c, uc;
|
int c = utf_ptr2char(p);
|
||||||
int newl;
|
int uc = utf_toupper(c);
|
||||||
char_u *s;
|
|
||||||
|
|
||||||
c = utf_ptr2char(p);
|
|
||||||
uc = utf_toupper(c);
|
|
||||||
|
|
||||||
/* Reallocate string when byte count changes. This is rare,
|
/* Reallocate string when byte count changes. This is rare,
|
||||||
* thus it's OK to do another malloc()/free(). */
|
* thus it's OK to do another malloc()/free(). */
|
||||||
l = utf_ptr2len(p);
|
l = utf_ptr2len(p);
|
||||||
newl = utf_char2len(uc);
|
int newl = utf_char2len(uc);
|
||||||
if (newl != l) {
|
if (newl != l) {
|
||||||
s = xmalloc(STRLEN(res) + 1 + newl - l);
|
// TODO(philix): use xrealloc() in strup_save()
|
||||||
|
char_u *s = xmalloc(STRLEN(res) + 1 + newl - l);
|
||||||
memmove(s, res, p - res);
|
memmove(s, res, p - res);
|
||||||
STRCPY(s + (p - res) + newl, p + l);
|
STRCPY(s + (p - res) + newl, p + l);
|
||||||
p = s + (p - res);
|
p = s + (p - res);
|
||||||
|
@@ -4399,10 +4399,6 @@ syn_cmd_region (
|
|||||||
++key_end;
|
++key_end;
|
||||||
free(key);
|
free(key);
|
||||||
key = vim_strnsave_up(rest, (int)(key_end - rest));
|
key = vim_strnsave_up(rest, (int)(key_end - rest));
|
||||||
if (key == NULL) { /* out of memory */
|
|
||||||
rest = NULL;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (STRCMP(key, "MATCHGROUP") == 0)
|
if (STRCMP(key, "MATCHGROUP") == 0)
|
||||||
item = ITEM_MATCHGROUP;
|
item = ITEM_MATCHGROUP;
|
||||||
else if (STRCMP(key, "START") == 0)
|
else if (STRCMP(key, "START") == 0)
|
||||||
@@ -4692,12 +4688,8 @@ static void syn_combine_list(short **clstr1, short **clstr2, int list_op)
|
|||||||
*/
|
*/
|
||||||
static int syn_scl_name2id(char_u *name)
|
static int syn_scl_name2id(char_u *name)
|
||||||
{
|
{
|
||||||
char_u *name_u;
|
// Avoid using stricmp() too much, it's slow on some systems
|
||||||
|
char_u *name_u = vim_strsave_up(name);
|
||||||
/* Avoid using stricmp() too much, it's slow on some systems */
|
|
||||||
name_u = vim_strsave_up(name);
|
|
||||||
if (name_u == NULL)
|
|
||||||
return 0;
|
|
||||||
int i;
|
int i;
|
||||||
for (i = curwin->w_s->b_syn_clusters.ga_len; --i >= 0; ) {
|
for (i = curwin->w_s->b_syn_clusters.ga_len; --i >= 0; ) {
|
||||||
if (SYN_CLSTR(curwin->w_s)[i].scl_name_u != NULL
|
if (SYN_CLSTR(curwin->w_s)[i].scl_name_u != NULL
|
||||||
|
Reference in New Issue
Block a user