]> granicus.if.org Git - vim/commitdiff
patch 7.4.1073 v7.4.1073
authorBram Moolenaar <Bram@vim.org>
Sat, 9 Jan 2016 21:28:33 +0000 (22:28 +0100)
committerBram Moolenaar <Bram@vim.org>
Sat, 9 Jan 2016 21:28:33 +0000 (22:28 +0100)
Problem:    Alloc_id depends on numbers, may use the same one twice.  It's not
            clear from the number what it's for.
Solution:   Use an enum.  Add a function to lookup the enum value from the
            name.

src/alloc.h [new file with mode: 0644]
src/globals.h
src/misc2.c
src/proto/misc2.pro
src/testdir/runtest.vim
src/testdir/test_quickfix.vim
src/version.c
src/vim.h

diff --git a/src/alloc.h b/src/alloc.h
new file mode 100644 (file)
index 0000000..c237ef3
--- /dev/null
@@ -0,0 +1,20 @@
+/* vi:set ts=8 sts=4 sw=4:
+ *
+ * VIM - Vi IMproved   by Bram Moolenaar
+ *
+ * Do ":help uganda"  in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ */
+
+/*
+ * alloc.h: enumeration of alloc IDs.
+ * Each entry must be on exactly one line, GetAllocId() depends on that.
+ */
+typedef enum {
+       aid_none = 0,
+       aid_qf_dirname_start,
+       aid_qf_dirname_now,
+       aid_qf_namebuf,
+       aid_qf_errmsg,
+       aid_qf_pattern,
+} alloc_id_T;
index 54a1d7256b1b0a11d6d3d3fbdfb2625b22a76c42..0931466e94a9c4088a39b56b027ce0ec0bafc99c 100644 (file)
@@ -1621,7 +1621,7 @@ EXTERN char *ignoredp;
 
 #ifdef FEAT_EVAL
 /* set by alloc_fail(): ID */
-EXTERN int  alloc_fail_id INIT(= 0);
+EXTERN alloc_id_T  alloc_fail_id INIT(= aid_none);
 /* set by alloc_fail(), when zero alloc() returns NULL */
 EXTERN int  alloc_fail_countdown INIT(= -1);
 /* set by alloc_fail(), number of times alloc() returns NULL */
index d8202f88a96b448e3c4f84f7069df76f97b40a59..854021255467f726a5aa625811974c6899d054cf 100644 (file)
@@ -837,12 +837,11 @@ alloc(size)
 
 /*
  * alloc() with an ID for alloc_fail().
- * LAST_ID_USED: 5
  */
     char_u *
 alloc_id(size, id)
     unsigned   size;
-    int                id UNUSED;
+    alloc_id_T id UNUSED;
 {
 #ifdef FEAT_EVAL
     if (alloc_fail_id == id && alloc_does_fail())
@@ -1001,13 +1000,12 @@ theend:
 
 /*
  * lalloc() with an ID for alloc_fail().
- * See LAST_ID_USED above.
  */
     char_u *
 lalloc_id(size, message, id)
     long_u     size;
     int                message;
-    int                id UNUSED;
+    alloc_id_T id UNUSED;
 {
 #ifdef FEAT_EVAL
     if (alloc_fail_id == id && alloc_does_fail())
index 35e1a8ec863fd04f9cc2d08f656ef431184b4bc4..3d1f10ad55490e40c6042acfd3687e0bcb0d21b3 100644 (file)
@@ -20,12 +20,12 @@ void adjust_cursor_col __ARGS((void));
 int leftcol_changed __ARGS((void));
 void vim_mem_profile_dump __ARGS((void));
 char_u *alloc __ARGS((unsigned size));
-char_u *alloc_id __ARGS((unsigned size, int id));
+char_u *alloc_id __ARGS((unsigned size, alloc_id_T id));
 char_u *alloc_clear __ARGS((unsigned size));
 char_u *alloc_check __ARGS((unsigned size));
 char_u *lalloc_clear __ARGS((long_u size, int message));
 char_u *lalloc __ARGS((long_u size, int message));
-char_u *lalloc_id __ARGS((long_u size, int message, int id));
+char_u *lalloc_id __ARGS((long_u size, int message, alloc_id_T id));
 void *mem_realloc __ARGS((void *ptr, size_t size));
 void do_outofmem_msg __ARGS((long_u size));
 void free_all_mem __ARGS((void));
index 734039aca1eae68aa9c71238ed94aaba3dd9b1fc..72b21d5ae878856b051b7c26618b581c6853ae41 100644 (file)
@@ -43,6 +43,22 @@ set nomore
 " Output all messages in English.
 lang mess C
 
+let s:srcdir = expand('%:p:h:h')
+
+" Support function: get the alloc ID by name.
+function GetAllocId(name)
+  exe 'split ' . s:srcdir . '/alloc.h'
+  /typedef enum/
+  let top = getline('.')
+  let lnum = search('aid_' . a:name . ',')
+  if lnum == 0
+    call add(v:errors, 'Alloc ID ' . a:name . ' not defined')
+  endif
+  close
+  return lnum - top
+endfunc
+
+
 " Source the test script.  First grab the file name, in case the script
 " navigates away.
 let testname = expand('%')
index fb05b7d780fb89e1c475c887c9d2edce8687f93a..b9f3f7bbbea37c57f0143c5eefe292bd04eb6529 100644 (file)
@@ -278,35 +278,35 @@ function Test_cbuffer()
 endfunction
 
 function Test_nomem()
-  call alloc_fail(1, 0, 0)
+  call alloc_fail(GetAllocId('qf_dirname_start'), 0, 0)
   try
     vimgrep vim runtest.vim
   catch
     call assert_true(v:exception =~ 'E342')
   endtry
 
-  call alloc_fail(2, 0, 0)
+  call alloc_fail(GetAllocId('qf_dirname_now'), 0, 0)
   try
     vimgrep vim runtest.vim
   catch
     call assert_true(v:exception =~ 'E342')
   endtry
 
-  call alloc_fail(3, 0, 0)
+  call alloc_fail(GetAllocId('qf_namebuf'), 0, 0)
   try
     cfile runtest.vim
   catch
     call assert_true(v:exception =~ 'E342')
   endtry
 
-  call alloc_fail(4, 0, 0)
+  call alloc_fail(GetAllocId('qf_errmsg'), 0, 0)
   try
     cfile runtest.vim
   catch
     call assert_true(v:exception =~ 'E342')
   endtry
 
-  call alloc_fail(5, 0, 0)
+  call alloc_fail(GetAllocId('qf_pattern'), 0, 0)
   try
     cfile runtest.vim
   catch
index ad87d1dad740669b16869e4c7b4bbbcfbc77ffe3..46e5aa7da27f20743960bb387d5a0c0ffd12e949 100644 (file)
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1073,
 /**/
     1072,
 /**/
index 1a176beaee7693b415bffba50fc4f70cdf136f6e..fd0b0b0dc1b0af78709436b85fa15c7c6c409224 100644 (file)
--- a/src/vim.h
+++ b/src/vim.h
@@ -1765,6 +1765,8 @@ typedef int proftime_T;       /* dummy for function prototypes */
 
 #include "structs.h"       /* file that defines many structures */
 
+#include "alloc.h"
+
 /* Values for "do_profiling". */
 #define PROF_NONE      0       /* profiling not started */
 #define PROF_YES       1       /* profiling busy */