diff --git a/code/services/QueuedJobService.php b/code/services/QueuedJobService.php
index <HASH>..<HASH> 100644
--- a/code/services/QueuedJobService.php
+++ b/code/services/QueuedJobService.php
@@ -563,7 +563,11 @@ class QueuedJobService {
 								_t('QueuedJobs.MEMORY_RELEASE', 'Job releasing memory and waiting (%s used)'),
 								$this->humanReadable($this->getMemoryUsage())
 							));
-							$jobDescriptor->JobStatus = QueuedJob::STATUS_WAIT;
+
+                            if ($jobDescriptor->JobStatus != QueuedJob::STATUS_BROKEN) {
+                                $jobDescriptor->JobStatus = QueuedJob::STATUS_WAIT;
+                            }
+
 							$broken = true;
 						}
 
@@ -573,7 +577,9 @@ class QueuedJobService {
 								'QueuedJobs.TIME_LIMIT',
 								'Queue has passed time limit and will restart before continuing'
 							));
-							$jobDescriptor->JobStatus = QueuedJob::STATUS_WAIT;
+							if ($jobDescriptor->JobStatus != QueuedJob::STATUS_BROKEN) {
+                                $jobDescriptor->JobStatus = QueuedJob::STATUS_WAIT;
+                            }
 							$broken = true;
 						}
 					}
fix(QueuedJobService) Broken job status set Wait

If a job breaks (exception or similar) its status should be set to "Broken",
however if it _also_ exceeds memory or time limits, it _could_ be then set
to "Wait" again, when it should remain broken.