diff --git a/allocate.c b/allocate.c
index f71b3c2f77699006287ceca23d5b5f47c6aeb116..6ad9bb75187e3eea1388c84f03640bcd8b75ff32 100644
--- a/allocate.c
+++ b/allocate.c
@@ -10,11 +10,12 @@
 #include "llist.h"
 
 #define INT_MAX __INT_MAX__
+#define PIDLEN 16
 
 typedef struct {
     int timeArrived;
     int timeCompleted; //instant of time completed
-    char processID[16];
+    char processID[PIDLEN];
     int executionTime;
     char parallelisable;
     int timeRemaining;
@@ -396,6 +397,7 @@ void advanceProcessQueue(llist *processQueue, int currentTime, int deltaTime, ll
     process *headProcess;
     process *paralizedProcess;
     char * parentPid;
+    char Pid[PIDLEN];
 
     headProcess = headData(processQueue);
 
@@ -407,7 +409,8 @@ void advanceProcessQueue(llist *processQueue, int currentTime, int deltaTime, ll
             headProcess->timeRemaining = 0;
             if (headProcess->parallelisable == 'p') {
                 //printf("process had finished, and was a paralized subprocess\n");
-                parentPid = strtok(headProcess->processID, ".");
+                strncpy(Pid, headProcess->processID, PIDLEN);
+                parentPid = strtok(Pid, ".");
                 paralizedProcess = parallelParent(paralellProcesses, parentPid);
                 paralizedProcess->subProcsRunning -= 1;
                 if (paralizedProcess->subProcsRunning == 0) {