aboutsummaryrefslogtreecommitdiffstats
path: root/src/xwidget.c
diff options
context:
space:
mode:
authorPaul Eggert2020-08-15 10:48:36 -0700
committerPaul Eggert2020-08-15 11:19:51 -0700
commitd0145537fa511a44e2a4af01da3947e92f0b8331 (patch)
tree0b098e725155c3b40031e0ecb8c65bbb25a6e402 /src/xwidget.c
parent4cba236749aafade7bd88cf2a10be48f44983faa (diff)
downloademacs-d0145537fa511a44e2a4af01da3947e92f0b8331.tar.gz
emacs-d0145537fa511a44e2a4af01da3947e92f0b8331.zip
Fix GC bugs related to uninitialized vectors
Avoid problems if GC occurs while initializing a vector. Problem with Fdelete reported by Pip Cet in: https://lists.gnu.org/r/emacs-devel/2020-08/msg00313.html I looked for similar problems elsewhere and found quite a few. * src/coding.c (make_subsidiaries): * src/composite.c (syms_of_composite): * src/font.c (build_style_table, Ffont_get_glyphs): * src/nsselect.m (clean_local_selection_data): * src/nsxwidget.m (js_to_lisp): * src/syntax.c (init_syntax_once): * src/window.c (Fcurrent_window_configuration): * src/xselect.c (selection_data_to_lisp_data) (clean_local_selection_data): Use make_nil_vector instead of make_uninit_vector. * src/fns.c (Fdelete): * src/xwidget.c (webkit_js_to_lisp): Use allocate_nil_vector instead of allocate_vector. * src/search.c (Fnewline_cache_check): Use make_vector instead of make_uninit_vector.
Diffstat (limited to 'src/xwidget.c')
-rw-r--r--src/xwidget.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/xwidget.c b/src/xwidget.c
index c61f5bef88d..154b3e9c82c 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -343,7 +343,7 @@ webkit_js_to_lisp (JSCValue *value)
343 memory_full (SIZE_MAX); 343 memory_full (SIZE_MAX);
344 344
345 ptrdiff_t n = dlen; 345 ptrdiff_t n = dlen;
346 struct Lisp_Vector *p = allocate_vector (n); 346 struct Lisp_Vector *p = allocate_nil_vector (n);
347 347
348 for (ptrdiff_t i = 0; i < n; ++i) 348 for (ptrdiff_t i = 0; i < n; ++i)
349 { 349 {
@@ -361,7 +361,7 @@ webkit_js_to_lisp (JSCValue *value)
361 Lisp_Object obj; 361 Lisp_Object obj;
362 if (PTRDIFF_MAX < n) 362 if (PTRDIFF_MAX < n)
363 memory_full (n); 363 memory_full (n);
364 struct Lisp_Vector *p = allocate_vector (n); 364 struct Lisp_Vector *p = allocate_nil_vector (n);
365 365
366 for (ptrdiff_t i = 0; i < n; ++i) 366 for (ptrdiff_t i = 0; i < n; ++i)
367 { 367 {