From ae1d87e24edc6a5fa4bc291e1b2ea20d7853127c Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 11 Sep 2012 15:59:50 -0700 Subject: [PATCH] Prefer assignment to memcpy when either will do. * lib-src/pop.c (socket_connection) [HAVE_GETADDRINFO]: * src/bidi.c (bidi_push_it, bidi_pop_it): * src/fns.c (copy_hash_table): * src/image.c (define_image_type): * src/keyboard.c (kbd_buffer_store_event_hold): * src/process.c (Fprocess_send_eof): * src/xfaces.c (x_create_gc) [HAVE_NS]: * src/xgselect.c (xg_select): Use assignment, not memcpy, as either will do here, and assignment is more likely to catch type errors. --- lib-src/ChangeLog | 5 +++++ lib-src/pop.c | 2 +- src/ChangeLog | 9 +++++++++ src/bidi.c | 4 ++-- src/fns.c | 2 +- src/image.c | 2 +- src/keyboard.c | 2 +- src/process.c | 5 ++--- src/xfaces.c | 2 +- src/xgselect.c | 4 ++-- 10 files changed, 25 insertions(+), 12 deletions(-) diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 35190fd2a8f..f5846657707 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,8 @@ +2012-09-11 Paul Eggert + + * pop.c (socket_connection) [HAVE_GETADDRINFO]: + Prefer assignment to memcpy when either will do. + 2012-08-31 Andreas Schwab * etags.c (consider_token): Always zero-terminate token buffer. diff --git a/lib-src/pop.c b/lib-src/pop.c index 74054e0e1b1..bfbcb8c9466 100644 --- a/lib-src/pop.c +++ b/lib-src/pop.c @@ -1083,7 +1083,7 @@ socket_connection (char *host, int flags) if (it->ai_addrlen == sizeof (addr)) { struct sockaddr_in *in_a = (struct sockaddr_in *) it->ai_addr; - memcpy (&addr.sin_addr, &in_a->sin_addr, sizeof (addr.sin_addr)); + addr.sin_addr = in_a->sin_addr; if (! connect (sock, (struct sockaddr *) &addr, sizeof (addr))) break; } diff --git a/src/ChangeLog b/src/ChangeLog index 2b0686cc49e..74a12b94b08 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,14 @@ 2012-09-11 Paul Eggert + * bidi.c (bidi_push_it, bidi_pop_it): + * fns.c (copy_hash_table): + * image.c (define_image_type): + * keyboard.c (kbd_buffer_store_event_hold): + * process.c (Fprocess_send_eof): + * xfaces.c (x_create_gc) [HAVE_NS]: + * xgselect.c (xg_select): + Prefer assignment to memcpy when either will do. + * alloc.c (discard_killed_buffers): Tune and simplify a bit. Use pointer-to-a-pointer to simplify and avoid a NILP check each time an item is removed. No need to mark this function 'inline'; diff --git a/src/bidi.c b/src/bidi.c index 73fec3533a4..4186a46e19e 100644 --- a/src/bidi.c +++ b/src/bidi.c @@ -612,7 +612,7 @@ bidi_push_it (struct bidi_it *bidi_it) /* Save the current iterator state in its entirety after the last used cache slot. */ bidi_cache_ensure_space (bidi_cache_idx); - memcpy (&bidi_cache[bidi_cache_idx++], bidi_it, sizeof (struct bidi_it)); + bidi_cache[bidi_cache_idx++] = *bidi_it; /* Push the current cache start onto the stack. */ eassert (bidi_cache_sp < IT_STACK_SIZE); @@ -636,7 +636,7 @@ bidi_pop_it (struct bidi_it *bidi_it) bidi_cache_idx = bidi_cache_start - 1; /* Restore the bidi iterator state saved in the cache. */ - memcpy (bidi_it, &bidi_cache[bidi_cache_idx], sizeof (struct bidi_it)); + *bidi_it = bidi_cache[bidi_cache_idx]; /* Pop the previous cache start from the stack. */ if (bidi_cache_sp <= 0) diff --git a/src/fns.c b/src/fns.c index 95450c5e911..91dc6639150 100644 --- a/src/fns.c +++ b/src/fns.c @@ -3680,7 +3680,7 @@ copy_hash_table (struct Lisp_Hash_Table *h1) h2 = allocate_hash_table (); next = h2->header.next.vector; - memcpy (h2, h1, sizeof *h2); + *h2 = *h1; h2->header.next.vector = next; h2->key_and_value = Fcopy_sequence (h1->key_and_value); h2->hash = Fcopy_sequence (h1->hash); diff --git a/src/image.c b/src/image.c index 4ec6105d72d..52598a41ab9 100644 --- a/src/image.c +++ b/src/image.c @@ -593,7 +593,7 @@ define_image_type (struct image_type *type, int loaded) /* Make a copy of TYPE to avoid a bus error in a dumped Emacs. The initialized data segment is read-only. */ struct image_type *p = xmalloc (sizeof *p); - memcpy (p, type, sizeof *p); + *p = *type; p->next = image_types; image_types = p; success = Qt; diff --git a/src/keyboard.c b/src/keyboard.c index d26cf35e108..42c67f68ede 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -3602,7 +3602,7 @@ kbd_buffer_store_event_hold (register struct input_event *event, if (hold_quit) { - memcpy (hold_quit, event, sizeof (*event)); + *hold_quit = *event; return; } diff --git a/src/process.c b/src/process.c index 0ae68567d6b..f80b5e80c76 100644 --- a/src/process.c +++ b/src/process.c @@ -6367,9 +6367,8 @@ process has been transmitted to the serial port. */) if (!proc_encode_coding_system[new_outfd]) proc_encode_coding_system[new_outfd] = xmalloc (sizeof (struct coding_system)); - memcpy (proc_encode_coding_system[new_outfd], - proc_encode_coding_system[old_outfd], - sizeof (struct coding_system)); + *proc_encode_coding_system[new_outfd] + = *proc_encode_coding_system[old_outfd]; memset (proc_encode_coding_system[old_outfd], 0, sizeof (struct coding_system)); diff --git a/src/xfaces.c b/src/xfaces.c index aee5158036f..c113c1a37b7 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -661,7 +661,7 @@ x_create_gc (struct frame *f, XGCValues *xgcv) { GC gc = xmalloc (sizeof *gc); - memcpy (gc, xgcv, sizeof (XGCValues)); + *gc = *xgcv; return gc; } diff --git a/src/xgselect.c b/src/xgselect.c index 0c00d815820..5f4c7edfb79 100644 --- a/src/xgselect.c +++ b/src/xgselect.c @@ -49,9 +49,9 @@ xg_select (int fds_lim, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, && g_main_context_pending (context = g_main_context_default ()))) return pselect (fds_lim, rfds, wfds, efds, timeout, sigmask); - if (rfds) memcpy (&all_rfds, rfds, sizeof (all_rfds)); + if (rfds) all_rfds = *rfds; else FD_ZERO (&all_rfds); - if (wfds) memcpy (&all_wfds, wfds, sizeof (all_rfds)); + if (wfds) all_wfds = *wfds; else FD_ZERO (&all_wfds); n_gfds = g_main_context_query (context, G_PRIORITY_LOW, &tmo_in_millisec, -- 2.39.2