This started by my removing useless (and risky) casts like this:

-       struct orf_token *token = (struct orf_token *)msg;
+       const struct orf_token *token = msg;

Those changes propagated and exposed one problem
that could not be resolved with simple "const" addition,
so I mentioned it in the log.
The rest are pretty straightforward.

>From 5badb9617e4adf923a2845ca97096aa2c2f49753 Mon Sep 17 00:00:00 2001
From: Jim Meyering <[email protected]>
Date: Wed, 15 Apr 2009 11:15:39 +0200
Subject: [PATCH] totemsrp.c: more "const" propagation

* exec/totemsrp.c (message_handler_memb_commit_token): Don't cast away
const on "memb_commit_token".  This exposed a const violation.
Fix that with minor rearrangement and an added memcpy.
---
 exec/totemsrp.c |   64 +++++++++++++++++++++++++++---------------------------
 1 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/exec/totemsrp.c b/exec/totemsrp.c
index a6226f8..42bf3f6 100644
--- a/exec/totemsrp.c
+++ b/exec/totemsrp.c
@@ -560,14 +560,14 @@ static void main_token_seqid_get (
        unsigned int *seqid,
        unsigned int *token_is);

-static void srp_addr_copy (struct srp_addr *dest, struct srp_addr *src);
+static void srp_addr_copy (struct srp_addr *dest, const struct srp_addr *src);

 static void srp_addr_to_nodeid (
        unsigned int *nodeid_out,
        struct srp_addr *srp_addr_in,
        unsigned int entries);

-static int srp_addr_equal (struct srp_addr *a, struct srp_addr *b);
+static int srp_addr_equal (const struct srp_addr *a, const struct srp_addr *b);

 static void memb_ring_id_create_or_load (struct totemsrp_instance *, struct 
memb_ring_id *);

@@ -579,7 +579,7 @@ static int orf_token_mcast (struct totemsrp_instance 
*instance, struct orf_token
 static void messages_free (struct totemsrp_instance *instance, unsigned int 
token_aru);

 static void memb_ring_id_set_and_store (struct totemsrp_instance *instance,
-       struct memb_ring_id *ring_id);
+       const struct memb_ring_id *ring_id);
 static void memb_state_commit_token_update (struct totemsrp_instance 
*instance, struct memb_commit_token *commit_token);
 static void memb_state_commit_token_target_set (struct totemsrp_instance 
*instance, struct memb_commit_token *commit_token);
 static int memb_state_commit_token_send (struct totemsrp_instance *instance, 
struct memb_commit_token *memb_commit_token);
@@ -663,7 +663,7 @@ static void main_token_seqid_get (
        unsigned int *seqid,
        unsigned int *token_is)
 {
-       struct orf_token *token = (struct orf_token *)msg;
+       const struct orf_token *token = msg;

        *seqid = 0;
        *token_is = 0;
@@ -1002,7 +1002,7 @@ error_exit:
 /*
  * Set operations for use by the membership algorithm
  */
-static int srp_addr_equal (struct srp_addr *a, struct srp_addr *b)
+static int srp_addr_equal (const struct srp_addr *a, const struct srp_addr *b)
 {
        unsigned int i;
        unsigned int res;
@@ -1016,7 +1016,7 @@ static int srp_addr_equal (struct srp_addr *a, struct 
srp_addr *b)
        return (1);
 }

-static void srp_addr_copy (struct srp_addr *dest, struct srp_addr *src)
+static void srp_addr_copy (struct srp_addr *dest, const struct srp_addr *src)
 {
        unsigned int i;

@@ -1082,7 +1082,7 @@ static void memb_set_subtract (
  */
 static void memb_consensus_set (
        struct totemsrp_instance *instance,
-       struct srp_addr *addr)
+       const struct srp_addr *addr)
 {
        int found = 0;
        int i;
@@ -1106,7 +1106,7 @@ static void memb_consensus_set (
  */
 static int memb_consensus_isset (
        struct totemsrp_instance *instance,
-       struct srp_addr *addr)
+       const struct srp_addr *addr)
 {
        int i;

@@ -1197,8 +1197,8 @@ static int memb_set_equal (
  * Is subset fully contained in fullset
  */
 static int memb_set_subset (
-       struct srp_addr *subset, int subset_entries,
-       struct srp_addr *fullset, int fullset_entries)
+       const struct srp_addr *subset, int subset_entries,
+       const struct srp_addr *fullset, int fullset_entries)
 {
        int i;
        int j;
@@ -1224,7 +1224,7 @@ static int memb_set_subset (
  * merge subset into fullset taking care not to add duplicates
  */
 static void memb_set_merge (
-       struct srp_addr *subset, int subset_entries,
+       const struct srp_addr *subset, int subset_entries,
        struct srp_addr *fullset, int *fullset_entries)
 {
        int found = 0;
@@ -1454,7 +1454,7 @@ static void memb_merge_detect_transmit (struct 
totemsrp_instance *instance);
  */
 static void timer_function_orf_token_timeout (void *data)
 {
-       struct totemsrp_instance *instance = (struct totemsrp_instance *)data;
+       struct totemsrp_instance *instance = data;

        switch (instance->memb_state) {
                case MEMB_STATE_OPERATIONAL:
@@ -1488,7 +1488,7 @@ static void timer_function_orf_token_timeout (void *data)

 static void timer_function_heartbeat_timeout (void *data)
 {
-       struct totemsrp_instance *instance = (struct totemsrp_instance *)data;
+       struct totemsrp_instance *instance = data;
        log_printf (instance->totemsrp_log_level_notice,
                "HeartBeat Timer expired Invoking token loss mechanism in state 
%d \n", instance->memb_state);
        timer_function_orf_token_timeout(data);
@@ -1496,7 +1496,7 @@ static void timer_function_heartbeat_timeout (void *data)

 static void memb_timer_function_state_gather (void *data)
 {
-       struct totemsrp_instance *instance = (struct totemsrp_instance *)data;
+       struct totemsrp_instance *instance = data;

        switch (instance->memb_state) {
        case MEMB_STATE_OPERATIONAL:
@@ -1523,7 +1523,7 @@ static void memb_timer_function_state_gather (void *data)

 static void memb_timer_function_gather_consensus_timeout (void *data)
 {
-       struct totemsrp_instance *instance = (struct totemsrp_instance *)data;
+       struct totemsrp_instance *instance = data;
        memb_state_consensus_timeout_expired (instance);
 }

@@ -1551,7 +1551,7 @@ static void deliver_messages_from_recovery_to_regular 
(struct totemsrp_instance
                if (res != 0) {
                        continue;
                }
-               recovery_message_item = (struct sort_queue_item *)ptr;
+               recovery_message_item = ptr;

                /*
                 * Convert recovery message into regular message
@@ -1839,10 +1839,10 @@ static void memb_state_recovery_enter (
        char is_originated[4096];
        char not_originated[4096];
        char seqno_string_hex[10];
-       struct srp_addr *addr;
+       const struct srp_addr *addr;
        struct memb_commit_token_memb_entry *memb_list;

-       addr = (struct srp_addr *)commit_token->end_of_commit_token;
+       addr = (const struct srp_addr *)commit_token->end_of_commit_token;
        memb_list = (struct memb_commit_token_memb_entry *)(addr + 
commit_token->addr_entries);

        log_printf (instance->totemsrp_log_level_notice,
@@ -2513,7 +2513,7 @@ static void token_retransmit (struct totemsrp_instance 
*instance)
  */
 static void timer_function_token_retransmit_timeout (void *data)
 {
-       struct totemsrp_instance *instance = (struct totemsrp_instance *)data;
+       struct totemsrp_instance *instance = data;

        switch (instance->memb_state) {
        case MEMB_STATE_GATHER:
@@ -2529,7 +2529,7 @@ static void timer_function_token_retransmit_timeout (void 
*data)

 static void timer_function_token_hold_retransmit_timeout (void *data)
 {
-       struct totemsrp_instance *instance = (struct totemsrp_instance *)data;
+       struct totemsrp_instance *instance = data;

        switch (instance->memb_state) {
        case MEMB_STATE_GATHER:
@@ -2545,7 +2545,7 @@ static void timer_function_token_hold_retransmit_timeout 
(void *data)

 static void timer_function_merge_detect_timeout(void *data)
 {
-       struct totemsrp_instance *instance = (struct totemsrp_instance *)data;
+       struct totemsrp_instance *instance = data;

        instance->my_merge_detect_timeout_outstanding = 0;

@@ -2966,7 +2966,7 @@ static void memb_ring_id_create_or_load (

 static void memb_ring_id_set_and_store (
        struct totemsrp_instance *instance,
-       struct memb_ring_id *ring_id)
+       const struct memb_ring_id *ring_id)
 {
        char filename[256];
        int fd;
@@ -3794,7 +3794,7 @@ static int message_handler_memb_merge_detect (

 static int memb_join_process (
        struct totemsrp_instance *instance,
-       struct memb_join *memb_join)
+       const struct memb_join *memb_join)
 {
        unsigned char *commit_token_storage[TOKEN_SIZE_MAX];
        struct memb_commit_token *my_commit_token =
@@ -3992,7 +3992,7 @@ static int message_handler_memb_join (
        size_t msg_len,
        int endian_conversion_needed)
 {
-       struct memb_join *memb_join;
+       const struct memb_join *memb_join;
        struct memb_join *memb_join_convert = alloca (msg_len);
        int gather_entered;

@@ -4001,7 +4001,7 @@ static int message_handler_memb_join (
                memb_join_endian_convert (msg, memb_join_convert);

        } else {
-               memb_join = (struct memb_join *)msg;
+               memb_join = msg;
        }

        if (instance->token_ring_id_seq < memb_join->ring_seq) {
@@ -4069,11 +4069,11 @@ static int message_handler_memb_commit_token (
                "got commit token\n");

        if (endian_conversion_needed) {
-               memb_commit_token = memb_commit_token_convert;
-               memb_commit_token_endian_convert (msg, memb_commit_token);
+               memb_commit_token_endian_convert (msg, 
memb_commit_token_convert);
        } else {
-               memb_commit_token = (struct memb_commit_token *)msg;
+               memcpy (memb_commit_token_convert, msg, msg_len);
        }
+       memb_commit_token = memb_commit_token_convert;
        addr = (struct srp_addr *)memb_commit_token->end_of_commit_token;
        memb_list = (struct memb_commit_token_memb_entry *)(addr + 
memb_commit_token->addr_entries);

@@ -4138,7 +4138,7 @@ static int message_handler_token_hold_cancel (
        size_t msg_len,
        int endian_conversion_needed)
 {
-       struct token_hold_cancel *token_hold_cancel = (struct token_hold_cancel 
*)msg;
+       const struct token_hold_cancel *token_hold_cancel = msg;

        if (memcmp (&token_hold_cancel->ring_id, &instance->my_ring_id,
                sizeof (struct memb_ring_id)) == 0) {
@@ -4156,8 +4156,8 @@ void main_deliver_fn (
        const void *msg,
        size_t msg_len)
 {
-       struct totemsrp_instance *instance = (struct totemsrp_instance 
*)context;
-       struct message_header *message_header = (struct message_header *)msg;
+       struct totemsrp_instance *instance = context;
+       const struct message_header *message_header = msg;

        if (msg_len < sizeof (struct message_header)) {
                log_printf (instance->totemsrp_log_level_security,
@@ -4186,7 +4186,7 @@ void main_iface_change_fn (
        const struct totem_ip_address *iface_addr,
        unsigned int iface_no)
 {
-       struct totemsrp_instance *instance = (struct totemsrp_instance 
*)context;
+       struct totemsrp_instance *instance = context;

        totemip_copy (&instance->my_id.addr[iface_no], iface_addr);
        assert (instance->my_id.addr[iface_no].nodeid);
--
1.6.3.rc0.154.g06890
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to