Changeset a42d7d8 in mainline for uspace/lib/bithenge/sequence.c


Ignore:
Timestamp:
2012-08-19T05:28:24Z (13 years ago)
Author:
Sean Bartell <wingedtachikoma@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
fae4d30
Parents:
1c79996
Message:

Bithenge: add fake system call errors to test error handling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/bithenge/sequence.c

    r1c79996 ra42d7d8  
    488488                return rc;
    489489        }
     490
     491        rc = seq_node_init(struct_as_seq(node), &struct_node_seq_ops, inner,
     492            blob, self->num_subtransforms, false);
     493        if (rc != EOK) {
     494                bithenge_scope_dec_ref(inner);
     495                free(node);
     496                return rc;
     497        }
     498
     499        bithenge_transform_inc_ref(struct_as_transform(self));
     500        node->transform = self;
     501        node->prefix = prefix;
     502
    490503        /* We should inc_ref(node) here, but that would make a cycle. Instead,
    491504         * we leave it 1 too low, so that when the only remaining use of node
     
    493506         * struct_node_destroy. */
    494507        bithenge_scope_set_current_node(inner, struct_as_node(node));
    495 
    496         rc = seq_node_init(struct_as_seq(node), &struct_node_seq_ops, inner,
    497             blob, self->num_subtransforms, false);
    498508        bithenge_scope_dec_ref(inner);
    499         if (rc != EOK) {
    500                 free(node);
    501                 return rc;
    502         }
    503 
    504         bithenge_transform_inc_ref(struct_as_transform(self));
    505         node->transform = self;
    506         node->prefix = prefix;
     509
    507510        *out = struct_as_node(node);
    508511
     
    834837                                rc = seq_node_field_offset(
    835838                                    node_as_seq(*out_node), &size, count);
    836                                 if (rc != EOK)
     839                                if (rc == EINVAL || rc == ENOENT)
    837840                                        break;
     841                                if (rc != EOK) {
     842                                        bithenge_node_dec_ref(*out_node);
     843                                        return rc;
     844                                }
    838845                                *out_size = size;
    839846                        }
Note: See TracChangeset for help on using the changeset viewer.