Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 0143f72 in mainline


Ignore:
Timestamp:
2009-07-02T15:01:08Z (12 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master
Children:
bb8dc88
Parents:
271283b
Message:

Statically allocated stat structure will do.

Location:
uspace
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/libfs/libfs.c

    r271283b r0143f72  
    440440        size_t size;
    441441        if (!ipc_data_read_receive(&callid, &size) ||
    442             size < sizeof(struct stat)) {
     442            size != sizeof(struct stat)) {
    443443                ipc_answer_0(callid, EINVAL);
    444444                ipc_answer_0(rid, EINVAL);
     
    446446        }
    447447
    448         struct stat *stat = malloc(sizeof(struct stat));
    449         if (!stat) {
    450                 ipc_answer_0(callid, ENOMEM);
    451                 ipc_answer_0(rid, ENOMEM);
    452                 return;
    453         }
    454         memset(stat, 0, sizeof(struct stat));
    455        
    456         stat->fs_handle = fs_handle;
    457         stat->dev_handle = dev_handle;
    458         stat->index = index;
    459         stat->lnkcnt = ops->lnkcnt_get(fn);
    460         stat->is_file = ops->is_file(fn);
    461         stat->size = ops->size_get(fn);
    462 
    463         ipc_data_read_finalize(callid, stat, sizeof(struct stat));
     448        struct stat stat;
     449        memset(&stat, 0, sizeof(struct stat));
     450       
     451        stat.fs_handle = fs_handle;
     452        stat.dev_handle = dev_handle;
     453        stat.index = index;
     454        stat.lnkcnt = ops->lnkcnt_get(fn);
     455        stat.is_file = ops->is_file(fn);
     456        stat.size = ops->size_get(fn);
     457
     458        ipc_data_read_finalize(callid, &stat, sizeof(struct stat));
    464459        ipc_answer_0(rid, EOK);
    465 
    466         free(stat);
    467460}
    468461
  • uspace/srv/fs/devfs/devfs_ops.c

    r271283b r0143f72  
    287287        size_t size;
    288288        if (!ipc_data_read_receive(&callid, &size) ||
    289             size < sizeof(struct stat)) {
     289            size != sizeof(struct stat)) {
    290290                ipc_answer_0(callid, EINVAL);
    291291                ipc_answer_0(rid, EINVAL);
     
    293293        }
    294294
    295         struct stat *stat = malloc(sizeof(struct stat));
    296         if (!stat) {
    297                 ipc_answer_0(callid, ENOMEM);
    298                 ipc_answer_0(rid, ENOMEM);
    299                 return;
    300         }
    301         memset(stat, 0, sizeof(struct stat));
    302 
    303         stat->fs_handle = devfs_reg.fs_handle;
    304         stat->dev_handle = dev_handle;
    305         stat->index = index;
    306         stat->lnkcnt = 1;
    307         stat->is_file = (index != 0);
    308         stat->size = 0;
     295        struct stat stat;
     296        memset(&stat, 0, sizeof(struct stat));
     297
     298        stat.fs_handle = devfs_reg.fs_handle;
     299        stat.dev_handle = dev_handle;
     300        stat.index = index;
     301        stat.lnkcnt = 1;
     302        stat.is_file = (index != 0);
     303        stat.size = 0;
    309304       
    310305        if (index != 0) {
     
    316311                link_t *lnk = hash_table_find(&devices, key);
    317312                if (lnk != NULL)
    318                         stat->devfs_stat.device = (dev_handle_t)index;
     313                        stat.devfs_stat.device = (dev_handle_t)index;
    319314                fibril_mutex_unlock(&devices_mutex);
    320315        }
    321316
    322         ipc_data_read_finalize(callid, stat, sizeof(struct stat));
     317        ipc_data_read_finalize(callid, &stat, sizeof(struct stat));
    323318        ipc_answer_0(rid, EOK);
    324 
    325         free(stat);
    326319}
    327320
Note: See TracChangeset for help on using the changeset viewer.