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:
parent
ef1f485db6
commit
bd1ee31f5b
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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 );
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user