DoublyLinkedList Insert FIrst function

When this function runs, it overwrites the first node in the list. I can't for the damn of me, figure out. Any help? Please give an explanation too, trying to learn, not turn in homework lol. K thanks :).

Code:

`// =============`

// InsertFirst()

// ==========================================

void DoublyLinkedList::InsertFirst( int value ){

Node* newNode = new Node(value, NULL, NULL);

Node* ptr;

/* ptr = first;

first = newNode;

newNode->previous = first;

newNode->next = ptr;

*/

newNode->next = first;

first = newNode;

newNode->previous = first;

if(Length() > 1){

newNode->next->previous = newNode;

}

else

newNode->next = NULL;

if(last == NULL)

last = first;

}//InsertFirst()

// ================