2
0
Эх сурвалжийг харах

pv: fixed compile warning

- solve: dereferencing type-punned pointer will break strict-aliasing rules
Daniel-Constantin Mierla 14 жил өмнө
parent
commit
dbbe252131

+ 8 - 3
modules_k/pv/pv_trans.c

@@ -71,6 +71,7 @@ int tr_eval_string(struct sip_msg *msg, tr_param_t *tp, int subtype,
 	char *p, *s;
 	str st, st2;
 	pv_value_t v, w;
+	void *vp;
 
 	if(val==NULL || val->flags&PV_VAL_NULL)
 		return -1;
@@ -539,7 +540,8 @@ int tr_eval_string(struct sip_msg *msg, tr_param_t *tp, int subtype,
 			j = 0;
 			max = val->rs.len - st.len;
 			while (i < val->rs.len && j < TR_BUFFER_SIZE) {
-				if (i <= max && val->rs.s[i] == st.s[0] && strncmp(val->rs.s+i, st.s, st.len) == 0) {
+				if (i <= max && val->rs.s[i] == st.s[0]
+						&& strncmp(val->rs.s+i, st.s, st.len) == 0) {
 					strncpy(_tr_buffer+j, st2.s, st2.len);
 					i += st.len;
 					j += st2.len;
@@ -557,7 +559,8 @@ int tr_eval_string(struct sip_msg *msg, tr_param_t *tp, int subtype,
 				LM_ERR("timeformat invalid parameters\n");
 				return -1;
 			}
-			if(!(val->flags&PV_VAL_INT) && (str2int(&val->rs, (unsigned int*) &val->ri)!=0))
+			if(!(val->flags&PV_VAL_INT) && (str2int(&val->rs,
+							(unsigned int*) &val->ri)!=0))
 			{
 				LM_ERR("value is not numeric\n");
 				return -1;
@@ -582,7 +585,9 @@ int tr_eval_string(struct sip_msg *msg, tr_param_t *tp, int subtype,
 			}
 			memcpy(s, st.s, st.len);
 			s[st.len] = '\0';
-			val->rs.len = strftime(_tr_buffer, TR_BUFFER_SIZE-1, s, localtime((time_t*) &val->ri));
+			vp = (void*)&val->ri;
+			val->rs.len = strftime(_tr_buffer, TR_BUFFER_SIZE-1, s,
+					localtime((time_t*)vp));
 			pkg_free(s);
 			val->flags = PV_VAL_STR;
 			val->rs.s = _tr_buffer;