1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-02 09:02:37 +03:00

Replace remaining StrNCpy() by strlcpy()

They are equivalent, except that StrNCpy() zero-fills the entire
destination buffer instead of providing just one trailing zero.  For
all but a tiny number of callers, that's just overhead rather than
being desirable.

Remove StrNCpy() as it is now unused.

In some cases, namestrcpy() is the more appropriate function to use.
While we're here, simplify the API of namestrcpy(): Remove the return
value, don't check for NULL input.  Nothing was using that anyway.
Also, remove a few unused name-related functions.

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://www.postgresql.org/message-id/flat/44f5e198-36f6-6cdb-7fa9-60e34784daae%402ndquadrant.com
This commit is contained in:
Peter Eisentraut
2020-08-10 18:51:31 +02:00
parent cec57b1a0f
commit 1784f278a6
20 changed files with 34 additions and 106 deletions

View File

@ -39,6 +39,7 @@
#include "replication/snapbuild.h"
#include "storage/proc.h"
#include "storage/procarray.h"
#include "utils/builtins.h"
#include "utils/memutils.h"
/* data for errcontext callback */
@ -288,6 +289,7 @@ CreateInitDecodingContext(const char *plugin,
{
TransactionId xmin_horizon = InvalidTransactionId;
ReplicationSlot *slot;
NameData plugin_name;
LogicalDecodingContext *ctx;
MemoryContext old_context;
@ -319,9 +321,14 @@ CreateInitDecodingContext(const char *plugin,
(errcode(ERRCODE_ACTIVE_SQL_TRANSACTION),
errmsg("cannot create logical replication slot in transaction that has performed writes")));
/* register output plugin name with slot */
/*
* Register output plugin name with slot. We need the mutex to avoid
* concurrent reading of a partially copied string. But we don't want any
* complicated code while holding a spinlock, so do namestrcpy() outside.
*/
namestrcpy(&plugin_name, plugin);
SpinLockAcquire(&slot->mutex);
StrNCpy(NameStr(slot->data.plugin), plugin, NAMEDATALEN);
slot->data.plugin = plugin_name;
SpinLockRelease(&slot->mutex);
if (XLogRecPtrIsInvalid(restart_lsn))