Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/11/2007, 02:59
koma42
 
Fecha de Ingreso: abril-2007
Mensajes: 9
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Problema con memcpy

Aqui te dejo la parte de la funcion , en la ultima parte esta el memcpy que da el error ...

int
fch_obtenerFichasModificadas( Ficha **pt_fichas,
long *nr_fichas )
{


EXEC SQL BEGIN DECLARE SECTION;

Ficha bd_fichas[DEFAULT_ARRAYSIZE];
FichaInd bi_fichas[DEFAULT_ARRAYSIZE];

EXEC SQL END DECLARE SECTION;



int rs;

EXEC SQL DECLARE BD_PAOL_MODP CURSOR FOR
SELECT ID_FICHA,
CE_FICHA,
CT_FICHA,
TX_CALLE,
NU_VIA,
DI_RESTO,
TO_CHAR( FE_MODI_REG, 'YYYYMMDD' ),
TO_CHAR( FE_CREA_REG, 'YYYYMMDD' ),
NO_PROG_ACT,
ID_USUA_LDAP,
CT_VIA,
DE_FICHA,
'',
NO_COMERCIAL,
NC_TELEFONO,
NC_FAX
FROM TAP_FICA
WHERE CR_MODI_PRODU = '1'
AND CR_BAJA_REG = '0';

if ( !pt_fichas || !nr_fichas )
return FCH_ERRDB_RAISE( E_FCH_BADPARAM );

*pt_fichas = NULL;
*nr_fichas = 0;

EXEC SQL AT BD_MODI
OPEN BD_PAOL_MODP;

if ( SQLCODE )
return FCH_ERRDB_RAISE( E_FCH_SQL_OPENMODP );

rs = E_FCH_NONE;

do
{

memset( bd_fichas, 0, sizeof( bd_fichas ) );


EXEC SQL AT BD_MODI
FETCH BD_PAOL_MODP
INTO :bd_fichas;


if ( SQLCODE < 0 )
{
rs = FCH_ERRDB_RAISE( E_FCH_SQL_FETCHMODP );
break;
}

if ( SQLROWS - *nr_fichas == 0 )
break;

*pt_fichas = (Ficha *)
realloc( *pt_fichas, sizeof( Ficha ) * SQLROWS );

if ( !*pt_fichas )
{
rs = FCH_ERRDB_RAISE( E_FCH_SYSMEM );
break;
}

memcpy( &( *pt_fichas )[ *nr_fichas ],
bd_fichas,
sizeof( Ficha ) * ( SQLROWS - *nr_fichas ) );


*nr_fichas = SQLROWS;

}
while ( !SQLCODE );