Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/sysinfo/sysinfo.c

    rbab75df6 rabf6c01  
    204204
    205205                *psubtree =
    206                     (sysinfo_item_t *) slab_alloc(sysinfo_item_cache, 0);
    207                 assert(*psubtree);
     206                    (sysinfo_item_t *) slab_alloc(sysinfo_item_cache, FRAME_ATOMIC);
     207                if (!*psubtree)
     208                        return NULL;
    208209
    209210                /* Fill in item name up to the delimiter */
    210211                (*psubtree)->name = str_ndup(name, i);
    211                 assert((*psubtree)->name);
     212                if (!(*psubtree)->name) {
     213                        slab_free(sysinfo_item_cache, *psubtree);
     214                        return NULL;
     215                }
    212216
    213217                /* Create subtree items */
    214218                if (name[i] == '.') {
    215219                        (*psubtree)->subtree_type = SYSINFO_SUBTREE_TABLE;
    216                         return sysinfo_create_path(name + i + 1,
     220                        sysinfo_item_t *item = sysinfo_create_path(name + i + 1,
    217221                            &((*psubtree)->subtree.table));
     222                        if (!item) {
     223                                free((*psubtree)->name);
     224                                slab_free(sysinfo_item_cache, *psubtree);
     225                        }
     226                        return item;
    218227                }
    219228
     
    271280
    272281                        sysinfo_item_t *item =
    273                             (sysinfo_item_t *) slab_alloc(sysinfo_item_cache, 0);
    274                         assert(item);
     282                            (sysinfo_item_t *) slab_alloc(sysinfo_item_cache, FRAME_ATOMIC);
     283                        if (!item)
     284                                return NULL;
    275285
    276286                        cur->next = item;
     
    278288                        /* Fill in item name up to the delimiter */
    279289                        item->name = str_ndup(name, i);
    280                         assert(item->name);
     290                        if (!item->name) {
     291                                slab_free(sysinfo_item_cache, item);
     292                                return NULL;
     293                        }
    281294
    282295                        /* Create subtree items */
    283296                        if (name[i] == '.') {
    284297                                item->subtree_type = SYSINFO_SUBTREE_TABLE;
    285                                 return sysinfo_create_path(name + i + 1,
    286                                     &(item->subtree.table));
     298                                sysinfo_item_t *sub = sysinfo_create_path(
     299                                    name + i + 1, &(item->subtree.table));
     300                                if (!sub) {
     301                                        free(item->name);
     302                                        slab_free(sysinfo_item_cache, item);
     303                                        return NULL;
     304                                }
     305                                return sub;
    287306                        }
    288307
     
    294313        }
    295314
    296         /* Unreachable */
    297         assert(false);
    298         return NULL;
     315        unreachable();
    299316}
    300317
     
    320337                item->val_type = SYSINFO_VAL_VAL;
    321338                item->val.val = val;
     339        } else {
     340                printf("Could not set sysinfo item %s.\n", name);
    322341        }
    323342
     
    352371                item->val.data.data = data;
    353372                item->val.data.size = size;
     373        } else {
     374                printf("Could not set sysinfo item %s.\n", name);
    354375        }
    355376
     
    380401                item->val.gen_val.fn = fn;
    381402                item->val.gen_val.data = data;
     403        } else {
     404                printf("Could not set sysinfo item %s.\n", name);
    382405        }
    383406
     
    413436                item->val.gen_data.fn = fn;
    414437                item->val.gen_data.data = data;
     438        } else {
     439                printf("Could not set sysinfo item %s.\n", name);
    415440        }
    416441
     
    436461        if (item != NULL)
    437462                item->val_type = SYSINFO_VAL_UNDEFINED;
     463        else
     464                printf("Could not set sysinfo item %s.\n", name);
    438465
    439466        mutex_unlock(&sysinfo_lock);
     
    468495                item->subtree.generator.fn = fn;
    469496                item->subtree.generator.data = data;
     497        } else {
     498                printf("Could not set sysinfo item %s.\n", name);
    470499        }
    471500
     
    656685                return ret;
    657686
    658         char *path = (char *) nfmalloc(size + 1);
    659         assert(path);
     687        // TODO: Change this so that allocation is not needed.
     688        char *path = malloc(size + 1);
     689        if (!path)
     690                return ret;
    660691
    661692        if ((copy_from_uspace(path, ptr, size + 1) == 0) &&
     
    765796                return ret;
    766797
    767         char *path = (char *) nfmalloc(size + 1);
    768         assert(path);
     798        // TODO: Change this so that allocation is not needed.
     799        char *path = malloc(size + 1);
     800        if (!path)
     801                return ret;
    769802
    770803        if ((copy_from_uspace(path, ptr, size + 1) == 0) &&
Note: See TracChangeset for help on using the changeset viewer.