1
0
mirror of https://github.com/elua/elua.git synced 2025-01-25 01:02:54 +08:00

Check/fix some inexplicit conversions and type issues in LuaRPC and elsewhere. Other cleanup in LuaRPC

This commit is contained in:
James Snyder 2011-06-20 20:02:45 -05:00
parent ef1f485db6
commit bd1ee31f5b
6 changed files with 39 additions and 36 deletions

View File

@ -51,7 +51,7 @@ static void MaybeByteSwap(char *number, size_t numbersize, DumpState *D)
int platform_little_endian = *(char*)&x;
if (platform_little_endian != D->target.little_endian)
{
int i;
unsigned long i;
for (i=0; i<numbersize/2; i++)
{
char temp = number[i];
@ -91,7 +91,7 @@ static void DumpInt(int x, DumpState* D)
DumpIntWithSize(x,D->target.sizeof_int,D);
}
static void DumpSize(int32_t x, DumpState* D)
static void DumpSize(uint32_t x, DumpState* D)
{
/* dump unsigned integer */
switch(D->target.sizeof_strsize_t) {
@ -179,7 +179,7 @@ static void DumpString(const TString* s, DumpState* D)
}
else
{
strsize_t size=s->tsv.len+1; /* include trailing '\0' */
strsize_t size=( strsize_t )s->tsv.len+1; /* include trailing '\0' */
DumpSize(size,D);
DumpBlock(getstr(s),size,D);
}

View File

@ -82,7 +82,7 @@ void transport_accept (Transport *tpt, Transport *atpt)
// Read & Write to Transport
void transport_read_buffer (Transport *tpt, u8 *buffer, int length)
{
u32 n;
int n;
struct exception e;
TRANSPORT_VERIFY_OPEN;

View File

@ -4,9 +4,11 @@
// Modified by BogdanM for eLua
#include <lua.h>
#include <lauxlib.h>
#include <limits.h>
#include "lua.h"
#include "lauxlib.h"
#include "auxmods.h"
#include "type.h"
#include "lrotable.h"

View File

@ -45,7 +45,7 @@ static int bitarray_new( lua_State *L )
if( lua_isnumber( L, 1 ) )
{
// capacity, [element_size_bits], [fill]
capacity = luaL_checkinteger( L, 1 );
capacity = ( u32 )luaL_checkinteger( L, 1 );
if( lua_isnumber( L, 2 ) )
elsize = luaL_checkinteger( L, 2 );
else
@ -69,7 +69,7 @@ static int bitarray_new( lua_State *L )
elsize = 8;
if( ( temp << 3 ) % elsize )
return luaL_error( L, "length is not a multiple of element size." );
capacity = ( temp << 3 ) / elsize;
capacity = ( u32 )( temp << 3 ) / elsize;
}
else
return luaL_error( L, "invalid arguments." );
@ -141,7 +141,7 @@ static int bitarray_get( lua_State *L )
u32 idx;
pa = bitarray_check( L );
idx = luaL_checkinteger( L, 2 );
idx = ( u32 )luaL_checkinteger( L, 2 );
if( ( idx <= 0 ) || ( idx > pa->capacity ) )
return luaL_error( L, "invalid index." );
lua_pushinteger( L, bitarray_getval( pa, idx ) );
@ -156,8 +156,8 @@ static int bitarray_set( lua_State *L )
u8 rest, mask;
pa = bitarray_check( L );
idx = luaL_checkinteger( L, 2 );
newval = luaL_checkinteger( L, 3 );
idx = ( u32 )luaL_checkinteger( L, 2 );
newval = ( u32 )luaL_checkinteger( L, 3 );
if( ( idx <= 0 ) || ( idx > pa->capacity ) )
return luaL_error( L, "invalid index." );
idx --;
@ -206,7 +206,7 @@ static int bitarray_iter( lua_State *L )
u32 idx;
pa = bitarray_check( L );
idx = luaL_checkinteger( L, 2 ) + 1;
idx = ( u32 )luaL_checkinteger( L, 2 ) + 1;
if( idx <= pa->capacity )
{
lua_pushinteger( L, idx );

View File

@ -62,7 +62,7 @@ static void doswap(int swap, void *p, size_t n)
{
char *a=p;
int i,j;
for (i=0, j=n-1, n=n/2; n--; i++, j--)
for (i=0, j=( int )n-1, n=n/2; n--; i++, j--)
{
char t=a[i]; a[i]=a[j]; a[j]=t;
}
@ -74,7 +74,7 @@ static void doswap(int swap, void *p, size_t n)
{ \
T a; \
int m=sizeof(a); \
if (i+m>len) goto done; \
if (((unsigned long)i+m)>len) goto done; \
memcpy(&a,s+i,m); \
i+=m; \
doswap(swap,&a,m); \
@ -88,10 +88,10 @@ static void doswap(int swap, void *p, size_t n)
{ \
T l; \
int m=sizeof(l); \
if (i+m>len) goto done; \
if (((unsigned long)i+m)>len) goto done; \
memcpy(&l,s+i,m); \
doswap(swap,&l,m); \
if (i+m+l>len) goto done; \
if (((unsigned long)i+m+l)>len) goto done; \
i+=m; \
lua_pushlstring(L,s+i,l); \
i+=l; \
@ -131,7 +131,7 @@ static int l_unpack(lua_State *L) /** unpack(s,f,[init]) */
case OP_STRING:
{
++N;
if (i+N>len) goto done;
if (((unsigned long)i+N)>len) goto done;
lua_pushlstring(L,s+i,N);
i+=N;
++n;
@ -141,7 +141,7 @@ static int l_unpack(lua_State *L) /** unpack(s,f,[init]) */
case OP_ZSTRING:
{
size_t l;
if (i>=len) goto done;
if (((unsigned long)i)>=len) goto done;
l=strlen(s+i);
lua_pushlstring(L,s+i,l);
i+=l+1;

View File

@ -175,7 +175,7 @@ static void transport_write_u8( Transport *tpt, u8 x )
static void swap_bytes( uint8_t *number, size_t numbersize )
{
int i;
u32 i;
for ( i = 0 ; i < numbersize / 2 ; i ++ )
{
uint8_t temp = number[ i ];
@ -217,7 +217,7 @@ static void transport_write_u32( Transport *tpt, u32 x )
// read a lua number from the transport
static lua_Number transport_read_number( Transport *tpt )
{
lua_Number x;
lua_Number x = 0;
u8 b[ tpt->lnum_bytes ];
struct exception e;
TRANSPORT_VERIFY_OPEN;
@ -448,7 +448,7 @@ static void write_variable( Transport *tpt, lua_State *L, int var_index )
u32 len;
transport_write_u8( tpt, RPC_STRING );
s = lua_tostring( L, var_index );
len = lua_strlen( L, var_index );
len = ( u32 )lua_strlen( L, var_index );
transport_write_u32( tpt, len );
transport_write_string( tpt, s, len );
break;
@ -492,7 +492,7 @@ static void write_variable( Transport *tpt, lua_State *L, int var_index )
luaL_error( L, "light userdata transmission unsupported" );
break;
}
MYASSERT( lua_gettop( L ) == stack_at_start );
lua_assert( lua_gettop( L ) == stack_at_start );
}
@ -632,7 +632,7 @@ static void client_negotiate( Transport *tpt )
header[1] = 'R';
header[2] = 'P';
header[3] = 'C';
header[4] = RPC_PROTOCOL_VERSION;
header[4] = ( char )RPC_PROTOCOL_VERSION;
header[5] = tpt->loc_little;
header[6] = tpt->lnum_bytes;
header[7] = tpt->loc_intnum;
@ -779,7 +779,7 @@ static int handle_index (lua_State *L)
const char *s;
check_num_args( L, 2 );
MYASSERT( lua_isuserdata( L, 1 ) && ismetatable_type( L, 1, "rpc.handle" ) );
lua_assert( lua_isuserdata( L, 1 ) && ismetatable_type( L, 1, "rpc.handle" ) );
if( lua_type( L, 2 ) != LUA_TSTRING )
return luaL_error( L, "can't index a handle with a non-string" );
@ -801,7 +801,7 @@ static int handle_newindex( lua_State *L )
const char *s;
check_num_args( L, 3 );
MYASSERT( lua_isuserdata( L, 1 ) && ismetatable_type( L, 1, "rpc.handle" ) );
lua_assert( lua_isuserdata( L, 1 ) && ismetatable_type( L, 1, "rpc.handle" ) );
if( lua_type( L, 2 ) != LUA_TSTRING )
return luaL_error( L, "can't index handle with a non-string" );
@ -820,12 +820,13 @@ static int handle_newindex( lua_State *L )
// replays series of indexes to remote side as a string
static void helper_remote_index( Helper *helper )
{
int i, len;
int i;
u32 len;
Helper **hstack;
Transport *tpt = &helper->handle->tpt;
// get length of name & make stack of helpers
len = strlen( helper->funcname );
len = ( u32 )strlen( helper->funcname );
if( helper->nparents > 0 ) // If helper has parents, build string to remote index
{
hstack = ( Helper ** )alloca( sizeof( Helper * ) * helper->nparents );
@ -843,14 +844,14 @@ static void helper_remote_index( Helper *helper )
// replay helper key names
for( i = 0 ; i < helper->nparents ; i ++ )
{
transport_write_string( tpt, hstack[ i ]->funcname, strlen( hstack[ i ]->funcname ) );
transport_write_string( tpt, hstack[ i ]->funcname, ( int )strlen( hstack[ i ]->funcname ) );
transport_write_string( tpt, ".", 1 );
}
}
else // If helper has no parents, just use length of global
transport_write_u32( tpt, len );
transport_write_string( tpt, helper->funcname, strlen( helper->funcname ) );
transport_write_string( tpt, helper->funcname, ( int )strlen( helper->funcname ) );
}
static void helper_wait_ready( Transport *tpt, u8 cmd )
@ -1072,7 +1073,7 @@ static int helper_index( lua_State *L )
const char *s;
check_num_args( L, 2 );
MYASSERT( lua_isuserdata( L, 1 ) && ismetatable_type( L, 1, "rpc.helper" ) );
lua_assert( lua_isuserdata( L, 1 ) && ismetatable_type( L, 1, "rpc.helper" ) );
if( lua_type( L, 2 ) != LUA_TSTRING )
return luaL_error( L, "can't index handle with non-string" );
@ -1257,13 +1258,13 @@ static void read_cmd_call( Transport *tpt, lua_State *L )
// handle errors
if ( error_code )
{
size_t len;
size_t elen;
const char *errmsg;
errmsg = lua_tolstring (L, -1, &len);
errmsg = lua_tolstring( L, -1, &elen );
transport_write_u8( tpt, 1 );
transport_write_u32( tpt, error_code );
transport_write_u32( tpt, len );
transport_write_string( tpt, errmsg, len );
transport_write_u32( tpt, ( u32 )elen );
transport_write_string( tpt, errmsg, ( int )elen );
}
else
{
@ -1279,11 +1280,11 @@ static void read_cmd_call( Transport *tpt, lua_State *L )
{
// bad function
const char *msg = "undefined function: ";
int errlen = strlen( msg ) + len;
int errlen = ( int )strlen( msg ) + len;
transport_write_u8( tpt, 1 );
transport_write_u32( tpt, LUA_ERRRUN );
transport_write_u32( tpt, errlen );
transport_write_string( tpt, msg, strlen( msg ) );
transport_write_string( tpt, msg, ( int )strlen( msg ) );
transport_write_string( tpt, funcname, len );
}
// empty the stack