Linear Linked List traversal broken

I'm attempting to insert items in my list in sorted order. I have accounted for if head is NULL, and if the item I'm trying to insert is less than head. But the problem occurs when I try to loop through until I find the item that is less than what I want to insert. In the while loop, the program just stops for some reason. Here is my code:

else if(strcmp(temp->aPerson.firstName, head->aPerson.firstName) == 1)
{
node * previous = head;
node * current = head->next;
while(current != NULL || strcmp(temp->aPerson.firstName, current->aPerson.firstName) == 1)
{
previous = current;
current = current->next;
}
temp->next = current;
previous->next = temp;
}

I'm not accessing memory that's not mine, I've made sure that current->next is a real node. I've been troubleshooting this for a couple of days, and I don't understand because it won't even get to the assigning part. It just stops after it goes through the while loop once, it won't go any further, no matter how many items I have in the list.
If you need to see more code, please let me know.
Thank you.
May be you should write
while(current != NULL && ...
And what if strcmp returns 2, 3 or more?
Sometimes I just need someone to point out the obvious. THANK YOU! I took both of your suggestions, and now it works fantastically.
Topic archived. No new replies allowed.