// my_func() puts up to len bytes into buffer
int my_func(void *p_struct, char *buffer, int len)
####
int
my_xs_func(p_struct, OUTLIST buffer, len)
void *p_struct;
char *buffer;
int len;
CODE:
buffer = (char *)malloc(len);
RETVAL = my_func(p_struct, buffer, len);
OUTPUT:
RETVAL
##
##
int
my_xs_func(p_struct, OUTLIST buffer, len)
void *p_struct;
SV *buffer;
int len;
PREINIT:
char *tmp_buffer;
CODE:
tmp_buffer = (char *)malloc(len);
RETVAL = my_func(p_struct, tmp_buffer, len);
buffer = sv_2mortal(newSVpv(tmp_buffer, 0));
free(tmp_buffer);
OUTPUT:
RETVAL