Corrected the check_density.py script so that it does not lose the
output from magic before attempting to process it.
diff --git a/scripts/check_density.py b/scripts/check_density.py
index 969e7aa..7dceb44 100755
--- a/scripts/check_density.py
+++ b/scripts/check_density.py
@@ -227,18 +227,7 @@
 
     # Use signal to poll the process and generate any output as it arrives
 
-    fomfill  = []
-    polyfill = []
-    lifill   = []
-    met1fill = []
-    met2fill = []
-    met3fill = []
-    met4fill = []
-    met5fill = []
-    xtiles = 0
-    ytiles = 0
-    xfrac = 0.0
-    yfrac = 0.0
+    dlines = []
 
     while mproc:
         status = mproc.poll()
@@ -252,39 +241,8 @@
                 outlines = output[0]
                 errlines = output[1]
                 for line in outlines.splitlines():
+                    dlines.append(line)
                     print(line)
-                    dpair = line.split(':')
-                    if len(dpair) == 2:
-                        layer = dpair[0]
-                        try:
-                            density = float(dpair[1].strip())
-                        except:
-                            continue
-                        if layer == 'FOM':
-                            fomfill.append(density)
-                        elif layer == 'POLY':
-                            polyfill.append(density)
-                        elif layer == 'LI1':
-                            lifill.append(density)
-                        elif layer == 'MET1':
-                            met1fill.append(density)
-                        elif layer == 'MET2':
-                            met2fill.append(density)
-                        elif layer == 'MET3':
-                            met3fill.append(density)
-                        elif layer == 'MET4':
-                            met4fill.append(density)
-                        elif layer == 'MET5':
-                            met5fill.append(density)
-                        elif layer == 'XTILES':
-                            xtiles = int(dpair[1].strip())
-                        elif layer == 'YTILES':
-                            ytiles = int(dpair[1].strip())
-                        elif layer == 'XFRAC':
-                            xfrac = float(dpair[1].strip())
-                        elif layer == 'YFRAC':
-                            yfrac = float(dpair[1].strip())
-
                 for line in errlines.splitlines():
                     print(line)
                 print('Magic exited with status ' + str(status))
@@ -304,6 +262,7 @@
                 sresult = select.select([mproc.stdout, mproc.stderr], [], [], 0)[0]
                 if mproc.stdout in sresult:
                     outstring = mproc.stdout.readline().strip()
+                    dlines.append(outstring)
                     print(outstring)
                 elif mproc.stderr in sresult:
                     outstring = mproc.stderr.readline().strip()
@@ -311,6 +270,56 @@
                 else:
                     break
 
+    fomfill  = []
+    polyfill = []
+    lifill   = []
+    met1fill = []
+    met2fill = []
+    met3fill = []
+    met4fill = []
+    met5fill = []
+    xtiles = 0
+    ytiles = 0
+    xfrac = 0.0
+    yfrac = 0.0
+
+    for line in dlines:
+        dpair = line.split(':')
+        if len(dpair) == 2:
+            layer = dpair[0]
+            try:
+                density = float(dpair[1].strip())
+            except:
+                continue
+            if layer == 'FOM':
+                fomfill.append(density)
+            elif layer == 'POLY':
+                polyfill.append(density)
+            elif layer == 'LI1':
+                lifill.append(density)
+            elif layer == 'MET1':
+                met1fill.append(density)
+            elif layer == 'MET2':
+                met2fill.append(density)
+            elif layer == 'MET3':
+                met3fill.append(density)
+            elif layer == 'MET4':
+                met4fill.append(density)
+            elif layer == 'MET5':
+                met5fill.append(density)
+            elif layer == 'XTILES':
+                xtiles = int(dpair[1].strip())
+            elif layer == 'YTILES':
+                ytiles = int(dpair[1].strip())
+            elif layer == 'XFRAC':
+                xfrac = float(dpair[1].strip())
+            elif layer == 'YFRAC':
+                yfrac = float(dpair[1].strip())
+
+    if ytiles == 0 or xtiles == 0:
+        print('Failed to read XTILES or YTILES from output.')
+        sys.exit(1)
+
     total_tiles = (ytiles - 9) * (xtiles - 9)
 
     print('')