From 6021d3d60e64d9174f41515d2d962df9b5d7645e Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 29 Aug 2022 17:15:28 -0700
Subject: [PATCH] Fix function protypes

clang-15+ has started diagnosing them as errors

thread.c:925:18: error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]
| void STATS_UNLOCK() {
|                  ^
|                   void

Upstream-Status: Submitted [https://github.com/memcached/memcached/pull/928]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 assoc.c     | 4 ++--
 memcached.c | 4 ++--
 slabs.c     | 2 +-
 testapp.c   | 2 +-
 thread.c    | 4 ++--
 5 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/assoc.c b/assoc.c
index bc68695..01063a9 100644
--- a/assoc.c
+++ b/assoc.c
@@ -261,7 +261,7 @@ static void *assoc_maintenance_thread(void *arg) {
 
 static pthread_t maintenance_tid;
 
-int start_assoc_maintenance_thread() {
+int start_assoc_maintenance_thread(void) {
     int ret;
     char *env = getenv("MEMCACHED_HASH_BULK_MOVE");
     if (env != NULL) {
@@ -279,7 +279,7 @@ int start_assoc_maintenance_thread() {
     return 0;
 }
 
-void stop_assoc_maintenance_thread() {
+void stop_assoc_maintenance_thread(void) {
     mutex_lock(&maintenance_lock);
     do_run_maintenance_thread = 0;
     pthread_cond_signal(&maintenance_cond);
diff --git a/memcached.c b/memcached.c
index 7871fe8..4d3b54a 100644
--- a/memcached.c
+++ b/memcached.c
@@ -84,7 +84,7 @@ static int try_read_command_udp(conn *c);
 static enum try_read_result try_read_network(conn *c);
 static enum try_read_result try_read_udp(conn *c);
 
-static int start_conn_timeout_thread();
+static int start_conn_timeout_thread(void);
 
 /* stats */
 static void stats_init(void);
@@ -374,7 +374,7 @@ static void *conn_timeout_thread(void *arg) {
     return NULL;
 }
 
-static int start_conn_timeout_thread() {
+static int start_conn_timeout_thread(void) {
     int ret;
 
     if (settings.idle_timeout == 0)
diff --git a/slabs.c b/slabs.c
index 3c78d8a..0dadd35 100644
--- a/slabs.c
+++ b/slabs.c
@@ -638,7 +638,7 @@ static void *memory_allocate(size_t size) {
 }
 
 /* Must only be used if all pages are item_size_max */
-static void memory_release() {
+static void memory_release(void) {
     void *p = NULL;
     if (mem_base != NULL)
         return;
diff --git a/testapp.c b/testapp.c
index 5face54..387a847 100644
--- a/testapp.c
+++ b/testapp.c
@@ -80,7 +80,7 @@ static struct conn *con = NULL;
 static bool allow_closed_read = false;
 static bool enable_ssl = false;
 
-static void close_conn() {
+static void close_conn(void) {
     if (con == NULL) return;
 #ifdef TLS
     if (con->ssl) {
diff --git a/thread.c b/thread.c
index d5ed052..f5efdc3 100644
--- a/thread.c
+++ b/thread.c
@@ -918,11 +918,11 @@ enum store_item_type store_item(item *item, int comm, conn* c) {
 
 /******************************* GLOBAL STATS ******************************/
 
-void STATS_LOCK() {
+void STATS_LOCK(void) {
     pthread_mutex_lock(&stats_lock);
 }
 
-void STATS_UNLOCK() {
+void STATS_UNLOCK(void) {
     pthread_mutex_unlock(&stats_lock);
 }
 
