aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
Commit message (Collapse)AuthorAge
* Avoid a seg fault when exiting after OOM errorFelipe Oliveira Carvalho2014-03-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I'm debugging OOM behavior using http://www.nongnu.org/failmalloc/ on Linux. gdb environment: ``` set env LD_PRELOAD=libfailmalloc.so set env FAILMALLOC_SPACE=0xF00000 ``` SEGV was happening like this: ``` Starting program: /home/felipe/code/neovim/build/bin/nvim [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Vim: Error: Out of memory. Program received signal SIGSEGV, Segmentation fault. 0x00000000004d3719 in getout (exitval=1) at /home/felipe/code/neovim/src/main.c:836 836 if (*p_viminfo != NUL) (gdb) ``` After the fix it works as expected: ``` (gdb) set environment LD_PRELOAD=libfailmalloc.so (gdb) set environment FAILMALLOC_SPACE=0xF00000 (gdb) r Starting program: /home/felipe/code/neovim/build/bin/nvim [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Vim: Error: Out of memory. Vim: Finished. [Inferior 1 (process 21505) exited with code 01] (gdb) ```
* Extract path.c from misc1.cJohn Schmidt2014-03-29
|
* Rename mch_* functions to os_* in os module.Thomas Wienecke2014-03-27
|
* Remove MEM_PROFILE related codeFelipe Oliveira Carvalho2014-03-26
| | | | | | | | | Code around `#ifdef MEM_PROFILE` was used to profile vim's memory comsumption. It's very likely broken as new code is using malloc() and free() directly. In this day and age, valgrind can solve in a much reliable way what this code was trying to do.
* Use memset instead of vim_memsetFelipe Oliveira Carvalho2014-03-25
| | | | | | | | | Ran some commands on terminal, reviewed changes, and made some manual changes too. find src | xargs perl -i -p -e "s/vim_memset/memset/g" git grep -l memset | egrep "\.c$" | xargs perl -i -p -e \ 's/(#include "vim\.h")/#include <string.h>\n\n\1/g'
* Do not include farsi.c in main.cFelipe Oliveira Carvalho2014-03-25
| | | | | | | | | - Change CMakeLists.txt to compile farsi.c normally - Add const to global variables in farsi.h and define them in farsi.c (no need to include farsi.h with DO_INIT defined in globals.h) - Include farsi.h where necessary - Include all necessary headers in farsi.c - Move farsi function declarations from main.h to farsi.h
* Move arabic.h #defines from arabic.h to arabic.cFelipe Oliveira Carvalho2014-03-24
| | | | | | | | | - Move arabic_shape() decl from main.h to arabic.h - Move arabic_combine() and arabic_maycombine() from mbyte.c to arabic.c as these functions use the #defines I moved. - Remove the unnecessary include of arabic.h in globals.h - Remove include of arabic.c (sic) in main.c (change CMakeLists.txt to compile arabic.c normally)
* adapt to the style guildelinesPetter Wahlman2014-03-19
| | | | | semi-automated harvest of low hanging fruit: change the unorthodox use of whitespace.
* cleanup environment variable handling + unit testsStefan Hoffmann2014-03-06
| | | | | | | | * removed a putenv() implementation which isn't needed anymore * mch_getenv() and mch_setenv() are now functions in src/os/env.c * removes direct calls to getenv() and setenv() outside of src/os/env.c * refactored the logic of get_env_name into mch_getenvname_at_index * added unittests for the functions in os/env.c
* Extract crypt.c from misc2.cFelipe Oliveira Carvalho2014-03-06
|
* Port mch_isdir to libuv.Thomas Wienecke2014-03-05
|
* Remove __ARGS macro. Close #205Nicolas Pierron2014-03-02
| | | | | | | | | This is a squash of all commits sent to #81. - Remove unused undef of __ARGS. - Fix mch_rename declaration. - Follow changes related to moved & extracted files. - Properly indent function declarations of getchar.h and quickfix.c.
* Clean-up main.c: follow STRNICMP replacement.Nicolas Pierron2014-03-01
|
* Extract garray.c from misc2.cFelipe Oliveira Carvalho2014-02-28
| | | | Start to split misc2.c in many other files (see #209).
* Temporarily remove valgrind check in travis buildThiago de Arruda2014-02-26
|
* Add configuration to help debug memory leaksThiago de Arruda2014-02-26
|
* Remove final build warningScott Nielsen2014-02-26
| | | | | | | | | This commit removes a K&R promoted parameter error, the final warning I have when building. I realize that this creates only one function that is written in a different style, but I thought it might be worth it to have a warning free build.
* Removes 'proto' dirscott-linder2014-02-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See #137 for the issue. Every header in the proto directory was: * Given include guards in the form #ifndef NEOVIM_FILENAME_H #define NEOVIM_FILENAME_H ... #endif /* NEOVIM_FILENAM_H */ * Renamed from *.pro -> *.h * Moved from src/proto/ to src/ This would have caused conficts with some existing headers in src/; rather than merge these conflicts now (which is a whole other can of worms involving multiple and conditional inclusion), any header in src/ with a conflicting name was renamed from *.h -> *_defs.h (which may or may not actually describe its purpose, the change is purely a namespacing issue). Once all of these changes were made a script was developed to determine what #includes needed to be added to each source file to describe its dependencies and allow it to compile; because the script is so short and I'll just list it here: #! /bin/bash cd $(dirname $0) # Scrapes `make` output for provided error messages and outputs #includes # needed to resolve them. # $1 : part of the clang error message between filename and identifier list_missing_includes() { for file_missing_pair in $(CC=clang make 2>&1 >/dev/null | sed -n "s/\/\(.*\.[hc]\).*$1.*'\(.*\)'.*/\1:\2/p"); do fields=(${file_missing_pair//:/ }) source_file=${fields[0]} missing_func=${fields[1]} # Try to find the declaration of the missing function. echo $(basename $source_file) \ \#include \"$(grep -r "\b$missing_func __ARGS" | sed -n "s/.*\/\(.*\)\:.*/\1/p")\" # Remove duplicates done | sort | uniq } echo "Finding missing function prototypes..." list_missing_includes "implicit declaration of function" echo "Finding missing identifier declarations..." list_missing_includes "use of undeclared identifier" Each list of required headers was added by hand in the following format: #include "vim.h" #include "*_defs.h" #include "filename.h" /* All other includes in same module here, in alphabetical order. */ /* All includes from other modules (e.g. "os/*.h") here in alphabetical * order. */
* Convert function declarations from K&R to ANSI style.scott-linder2014-02-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | cproto (http://invisible-island.net/cproto/) was used to do the bulk of the work in batch; even the most recent version had some issues with typedef'd parameters; a quick "patch" was to modify `lex.l` to explicitly include all vim typedefs as known types. One example from `vim.h` is typedef unsigned char char_u; which was added in `lex.l` as <INITIAL>char_u { save_text_offset(); return T_CHAR; } Even with these changes there were some problems: * Two files (`mbyte.c` and `os_unix.c`) were not cleanly converted. * Any function with the `UNUSED` macro in its parameter list was not converted. Rather than spend more time fixing the automated approach, the two files `mbyte.c` and `os_unix.c` were converted by hand. The `UNUSED` macros were compiler specific, and the alternative, generic version would require a different syntax, so in order to simplify the conversion all uses of `UNUSED` were stripped, and then the sources were run back through cproto. It is planned to reconsider each use of `UNUSED` manually using a new macro definition.
* Clean up main.c:parse_command_nameMitchell Rosen2014-02-22
|
* Cleanup refactoring in mainMitchell Rosen2014-02-22
|
* Wrap calls to 'get_mess_env' into LIBINTL #ifdefsThiago de Arruda2014-02-01
|
* Remove more #ifdef dead codeThiago de Arruda2014-02-01
|
* Import vim from changeset v5628:c9cad40b4181Thiago de Arruda2014-01-31
- Cleanup source tree, leaving only files necessary for compilation/testing - Process files through unifdef to remove tons of FEAT_* macros - Process files through uncrustify to normalize source code formatting. - Port the build system to cmake