この行で
if ((last_search == NULL) || (last_search != NULL && total_results != 0))
Cの短絡評価規則でlast_search
は、nullでない場合にのみ、の右側を評価しようとする||
ため、次のように書くのと同じです。
if ((last_search == NULL) || (total_results != 0))
誰かから後者を使うように言われましたが、それでも前者の方が読みやすいのではないでしょうか。また、コンパイラは冗長性を最適化しませんlast_search != NULL
か?