commit: r631 - trunk/libspread
[email protected] Mon, 06 Jan 2014 14:47:16 -0500
| Newsgroups | gmane.network.spread.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: jschultz
Date: 2014-01-06 14:47:15 -0500 (Mon, 06 Jan 2014)
New Revision: 631
Modified:
trunk/libspread/fl.c
trunk/libspread/scatp.c
trunk/libspread/sp.c
Log:
Eliminate redundant comparisons now that scatter's fields are unsigned.
Modified: trunk/libspread/fl.c
===================================================================
--- trunk/libspread/fl.c 2014-01-06 19:19:50 UTC (rev 630)
+++ trunk/libspread/fl.c 2014-01-06 19:47:15 UTC (rev 631)
@@ -1139,7 +1139,7 @@
} else if (IS_ILLEGAL_SEND_MTYPE(mess_type)) { /* used a reserved mess type */
DEBUG(std_stkfprintf(stderr, 0, "Illegal use of reserved message type!\n"));
ret = ILLEGAL_MESSAGE_TYPE;
- } else if (scat->num_elements < 0 || scat->num_elements > FL_MAX_SCATTER_ELEMENTS) {
+ } else if (scat->num_elements > FL_MAX_SCATTER_ELEMENTS) {
DEBUG(std_stkfprintf(stderr, 0, "Illegal scatter num_elements %d\n", scat->num_elements));
ret = ILLEGAL_MESSAGE;
} else if ((grp_not_priv = !is_private_group(grp)) && /* I allow sends to private groups */
Modified: trunk/libspread/scatp.c
===================================================================
--- trunk/libspread/scatp.c 2014-01-06 19:19:50 UTC (rev 630)
+++ trunk/libspread/scatp.c 2014-01-06 19:47:15 UTC (rev 631)
@@ -32,8 +32,10 @@
*
*/
+/* TODO: some of this code needs to be reviewed in light of scatter's
+ now using size_t's instead of ints or longs
+*/
-
#include <errno.h>
#include <assert.h>
#include <string.h>
@@ -44,12 +46,10 @@
const scat_element *curr = scat->elements, *end = scat->elements + scat->num_elements;
long ret = 0;
- if (scat->num_elements < 0 || scat->num_elements > MAX_CLIENT_SCATTER_ELEMENTS)
+ if (scat->num_elements > MAX_CLIENT_SCATTER_ELEMENTS)
return ILLEGAL_MESSAGE;
for (; curr != end; ++curr) {
- if (curr->len < 0)
- return ILLEGAL_MESSAGE;
ret += curr->len;
}
return ret;
@@ -59,14 +59,11 @@
{
int i;
- if (scat->num_elements < 0 || scat->num_elements > MAX_CLIENT_SCATTER_ELEMENTS)
+ if (scat->num_elements > MAX_CLIENT_SCATTER_ELEMENTS)
return ILLEGAL_MESSAGE;
for (i = 0; i < scat->num_elements && scat->elements[i].len == 0; ++i);
- if (i != scat->num_elements && scat->elements[i].len < 0)
- return ILLEGAL_MESSAGE;
-
pos->scat = (scatter*) scat;
pos->elem_ind = i;
pos->buff_ind = 0;
@@ -75,7 +72,7 @@
int scatp_end(scatp *pos, const scatter *scat)
{
- if (scat->num_elements < 0 || scat->num_elements > MAX_CLIENT_SCATTER_ELEMENTS)
+ if (scat->num_elements > MAX_CLIENT_SCATTER_ELEMENTS)
return ILLEGAL_MESSAGE;
pos->scat = (scatter*) scat;
@@ -101,7 +98,7 @@
{
const scatter *scat = pos->scat;
- return (scat->num_elements >= 0 && scat->num_elements <= MAX_CLIENT_SCATTER_ELEMENTS &&
+ return (scat->num_elements <= MAX_CLIENT_SCATTER_ELEMENTS &&
(scatp_is_end(pos) ||
(pos->elem_ind >= 0 && pos->elem_ind < scat->num_elements &&
pos->buff_ind >= 0 && pos->buff_ind < scat->elements[pos->elem_ind].len)));
@@ -111,7 +108,7 @@
{
const scatter *scat = pos->scat;
- return (scat->num_elements < 0 || scat->num_elements > MAX_CLIENT_SCATTER_ELEMENTS ||
+ return (scat->num_elements > MAX_CLIENT_SCATTER_ELEMENTS ||
(!scatp_is_end(pos) &&
(pos->elem_ind < 0 || pos->elem_ind >= scat->num_elements ||
pos->buff_ind < 0 || pos->buff_ind >= scat->elements[pos->elem_ind].len)));
@@ -119,7 +116,7 @@
int scatp_is_end(const scatp *pos)
{
- if (pos->scat->num_elements < 0 || pos->scat->num_elements > MAX_CLIENT_SCATTER_ELEMENTS)
+ if (pos->scat->num_elements > MAX_CLIENT_SCATTER_ELEMENTS)
return ILLEGAL_MESSAGE;
return pos->elem_ind == pos->scat->num_elements && pos->buff_ind == 0;
@@ -156,8 +153,6 @@
curr = scat->elements + pos1->elem_ind;
end = scat->elements + pos2->elem_ind;
while (++curr != end) {
- if (curr->len < 0)
- return ILLEGAL_MESSAGE;
ret -= curr->len;
}
} else {
@@ -165,8 +160,6 @@
curr = scat->elements + pos2->elem_ind;
end = scat->elements + pos1->elem_ind;
while (++curr != end) {
- if (curr->len < 0)
- return ILLEGAL_MESSAGE;
ret += curr->len;
}
}
@@ -204,9 +197,6 @@
skip_bytes = num_bytes - tmp; /* how many bytes left to skip */
for (; elem_ind < scat->num_elements; ++elem_ind) {
- if (scat->elements[elem_ind].len < 0)
- return ILLEGAL_MESSAGE;
-
/* use < 0 because it jumps over any zero length buffers */
if ((skip_bytes -= scat->elements[elem_ind].len) < 0) {
skip_bytes += scat->elements[elem_ind].len; /* restore to positive */
@@ -245,9 +235,6 @@
skip_bytes = num_bytes - pos->buff_ind;
for (e_ind = pos->elem_ind - 1; e_ind >= 0; --e_ind) {
- if (scat->elements[e_ind].len < 0)
- return ILLEGAL_MESSAGE;
-
/* again we want to ignore any zero length buffers */
if (scat->elements[e_ind].len > 0) {
elem_ind = e_ind; /* elem_ind must reference a non-empty element buffer */
Modified: trunk/libspread/sp.c
===================================================================
--- trunk/libspread/sp.c 2014-01-06 19:19:50 UTC (rev 630)
+++ trunk/libspread/sp.c 2014-01-06 19:47:15 UTC (rev 631)
@@ -1100,7 +1100,6 @@
for( i=0, mess_len=0; i < scat_mess->num_elements; i++ )
{
- if( scat_mess->elements[i].len < 0 ) return ( ILLEGAL_MESSAGE );
mess_len += scat_mess->elements[i].len;
}
@@ -1317,25 +1316,11 @@
Flip_mess( head_ptr );
}
}
- /* Validate user's scatter */
+
for( max_mess_len = 0, i=0; i < scat_mess->num_elements; i++ ) {
- if ( scat_mess->elements[i].len < 0 ) {
- if ( !drop_semantics && !This_session_message_saved) {
- Mutex_lock( &Struct_mutex );
- if( ses != SP_get_session( mbox ) ){
- Mutex_unlock( &Struct_mutex );
- Mutex_unlock( &Sessions[ses].recv_mutex );
- return( ILLEGAL_SESSION );
- }
- memcpy(&(Sessions[ses].recv_saved_head), &mess_head, sizeof(message_header) );
- Sessions[ses].recv_message_saved = 1;
- Mutex_unlock( &Struct_mutex );
- }
- Mutex_unlock( &Sessions[ses].recv_mutex );
- return( ILLEGAL_MESSAGE );
- }
max_mess_len += scat_mess->elements[i].len;
}
+
/* Validate num_groups and data_len */
if (head_ptr->num_groups < 0) {
/* reject this message since it has an impossible (negative) num_groups