lib/sdo_request.c
branchstable-1.5
changeset 2431 eee9ed9901f7
parent 2428 8a270ea612ee
child 2433 3bdd7a747fae
equal deleted inserted replaced
2430:1430a47a67dd 2431:eee9ed9901f7
    99         fprintf(stderr, "Failed to get SDO request state: %s\n",
    99         fprintf(stderr, "Failed to get SDO request state: %s\n",
   100                 strerror(errno));
   100                 strerror(errno));
   101 
   101 
   102     if (data.size) { // new data waiting to be copied
   102     if (data.size) { // new data waiting to be copied
   103         if (req->mem_size < data.size) {
   103         if (req->mem_size < data.size) {
   104             if (req->data)
   104             fprintf(stderr, "Received %u bytes do not fit info SDO data"
   105                 free(req->data);
   105                     " memory (%u bytes)!\n", data.size, req->mem_size);
   106             req->data = malloc(data.size);
   106             return EC_REQUEST_ERROR;
   107             if (!req->data) {
       
   108                 req->mem_size = 0;
       
   109                 fprintf(stderr, "Failed to allocate %u bytes of SDO data"
       
   110                         " memory!\n", data.size);
       
   111                 return EC_REQUEST_ERROR;
       
   112             }
       
   113             req->mem_size = data.size;
       
   114         }
   107         }
   115 
   108 
   116         data.data = req->data;
   109         data.data = req->data;
   117 
   110 
   118         if (ioctl(req->config->master->fd, EC_IOCTL_SDO_REQUEST_DATA,
   111         if (ioctl(req->config->master->fd, EC_IOCTL_SDO_REQUEST_DATA,