| 663 |
p_article = p_section->p_page_first_article[*p_page]; |
p_article = p_section->p_page_first_article[*p_page]; |
| 664 |
|
|
| 665 |
// p_section->p_page_first_article[*p_page]->aid <= aid < p_section->p_page_first_article[*p_page + 1]->aid |
// p_section->p_page_first_article[*p_page]->aid <= aid < p_section->p_page_first_article[*p_page + 1]->aid |
| 666 |
right = (*p_page == p_section->page_count - 1 ? INT32_MAX : p_section->p_page_first_article[*p_page + 1]->aid); |
right = (*p_page == MAX(1, p_section->page_count) - 1 ? INT32_MAX : p_section->p_page_first_article[*p_page + 1]->aid); |
| 667 |
|
|
| 668 |
// left will be the offset of article found or offset to insert |
// left will be the offset of article found or offset to insert |
| 669 |
left = 0; |
left = 0; |
| 670 |
|
|
| 671 |
while (1) |
while (aid > p_article->aid) |
| 672 |
{ |
{ |
|
if (aid == p_article->aid) // found |
|
|
{ |
|
|
break; |
|
|
} |
|
|
else if (aid < p_article->aid) // not exist |
|
|
{ |
|
|
p_article = NULL; |
|
|
break; |
|
|
} |
|
|
|
|
| 673 |
// aid > p_article->aid |
// aid > p_article->aid |
| 674 |
p_article = p_article->p_next; |
p_article = p_article->p_next; |
| 675 |
left++; |
left++; |
| 677 |
// over last article in the page |
// over last article in the page |
| 678 |
if (p_article == p_section->p_article_head || p_article->aid >= right) |
if (p_article == p_section->p_article_head || p_article->aid >= right) |
| 679 |
{ |
{ |
|
p_article = NULL; |
|
| 680 |
break; |
break; |
| 681 |
} |
} |
| 682 |
} |
} |
| 683 |
|
|
| 684 |
|
if (aid != p_article->aid) // not exist |
| 685 |
|
{ |
| 686 |
|
p_article = NULL; |
| 687 |
|
} |
| 688 |
|
|
| 689 |
*p_offset = left; |
*p_offset = left; |
| 690 |
|
|
| 691 |
return p_article; |
return p_article; |