summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/BCDDFile.cs18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/BCDDFile.cs b/src/BCDDFile.cs
index 03d0af2..4e9c3f9 100644
--- a/src/BCDDFile.cs
+++ b/src/BCDDFile.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.IO;
using System.Threading;
namespace BCDD
@@ -7,6 +8,8 @@ namespace BCDD
public class BCDDFile
{
public List<String> errors;
+ private bool errorsEncountered;
+ private static Mutex _errorsPrintLock = new Mutex();
private String filename;
private PBNFile file;
private String shortname;
@@ -20,6 +23,7 @@ namespace BCDD
public BCDDFile(String filename)
{
this.errors = new List<String>();
+ this.errorsEncountered = false;
this.filename = filename;
this.file = new PBNFile(filename);
this.shortname = Path.GetFileName(this.filename);
@@ -74,9 +78,17 @@ namespace BCDD
List<String> validationErrors = board.ValidateLayout();
if (validationErrors.Count > 0)
{
- throw new InvalidLayoutException(
- String.Join("; ", validationErrors.ToArray())
- );
+ BCDDFile._errorsPrintLock.WaitOne();
+ if (!this.errorsEncountered)
+ {
+ this.error("Deal layout errors encountered");
+ }
+ foreach (String validationError in validationErrors)
+ {
+ this.error(validationError, boardNo);
+ }
+ this.errorsEncountered = true;
+ BCDDFile._errorsPrintLock.ReleaseMutex();
}
int[,] ddTable = table.GetDDTable();
if (ddTable != null)