On Sun, Sep 18 23:11, Kevin Wolf wrote: > * LostIOv1: FILE war bisher die Datenstruktur, die auch per RPC benutzt > wurde, um Handles zu übergeben, und die mit Zeug überfrachtet war, > dass gar nicht durch die Gegend geschickt werden muss. Außerdem gab es > noch eine andere Datenstruktur, die FILE für interne Zwecke erweitert > hat. > > Jetzt ist FILE das lokale und io_resource_t das für den RPC. > > Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx> > --- > diff --git a/src/modules/lib/stdlibc/file.c b/src/modules/lib/stdlibc/file.c > index 45e24f2..313eef4 100644 > --- a/src/modules/lib/stdlibc/file.c > +++ b/src/modules/lib/stdlibc/file.c > @@ -130,33 +130,36 @@ FILE* fopen (const char* filename, const char* mode) > //weren. > free(full_path); > > - FILE* io_res = (io_resource_t*) resp->data; > + FILE* int_res; > + io_resource_t* io_res = (io_resource_t*) resp->data; > + > //Wenn ein Fehler beim oeffnen aufgetreten ist, wird NULL zurueck gegeben. > if ((io_res == NULL) || (io_res->pid == 0) || (resp->data_length == 0)) { > - io_res = NULL; > + int_res = NULL; > } else { > - io_res->buffer_mode = IO_BUFFER_MODE_NONE; > - io_res->buffer_ptr = NULL; > - io_res->buffer_size = 0; > - io_res->buffer_pos = 0; > > // Pfad im Handle hinterlegen > io_res->path = malloc(strlen(filename) + 1); > strcpy(io_res->path, filename); > > > - struct lostio_internal_file* int_res = malloc(sizeof(*int_res)); > - int_res->res = *io_res; > + int_res = calloc(1, sizeof(*int_res)); > + int_res->res = malloc(sizeof(*int_res->res)); > + *int_res->res = *io_res; Hier frage ich mich ein bisschen warum du hier neuen Speicher allozierst und nicht einfach den vom RPC nimmst. Aber jo, da der code ja eh nur für etwa 2 Commits überleben muss, und an sich nicht kaputt ist, kannst du das von mir aus auch so lassen. ;-) > + > + int_res->buffer_mode = IO_BUFFER_MODE_NONE; > + int_res->buffer_ptr = NULL; > + int_res->buffer_size = 0; > + int_res->buffer_pos = 0; > int_res->free_buffer = false; > - setvbuf(&int_res->res, malloc(BUFSIZ), _IOFBF, BUFSIZ); > + setvbuf(int_res, malloc(BUFSIZ), _IOFBF, BUFSIZ); > int_res->free_buffer = true; > > free(io_res); > - io_res = &int_res->res; > } > free(resp); > > - return io_res; > + return int_res; > } > > /** Von mir aus kann das so rein. Acked-by: Antoine Kaufmann <toni@xxxxxxxxxx> -- Antoine Kaufmann <toni@xxxxxxxxxxxxxxxx>
Attachment:
signature.asc
Description: Digital signature