Visitar URL original
Part 5: page_num out of bounds · Issue #102 · cstack/db_tutorial · GitHub
Skip to content

Part 5: page_num out of bounds #102

Description

@duncanchiu409

If page_num start from 0 to TABLE_MAX_PAGE - 1, not 1, the if statement should be this instead. Tell me if I am right or wrong.

void* get_page(Pager* pager, uint32_t page_number){
    if(page_number >= TABLE_MAX_PAGES){
        printf("Tried to fetch page number out of bounds. %d > %d\n", page_number, TABLE_MAX_PAGES);
        exit(EXIT_FAILURE);
    }

Activity

  1. skypaver commented on Aug 8, 2023

    @skypaver

    I noticed the same problem. I think you're right.

    Maybe there's a similar problem also in the function get_page (line 248 in db.c):

    void* get_page(Pager* pager, uint32_t page_number){
        ...
        if (page_num <= num_pages) {
            lseek(pager->file_descriptor, page_num * PAGE_SIZE, SEEK_SET);
            ...
        }
        ...
     }
    

    (line 248 in db.c)if (page_num <= num_pages) I think it should be if (page_num < num_pages). Since the page_num is an index starts from 0 to TABLE_MAX_PAGE - 1, and the num_pages starts from 1.

    I'm not quite sure. Could you please tell me if I am right or wrong? Thanks so much.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions