From 52a9a0d4101d00a5ed4c094181434bb52f022200 Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Thu, 25 Jul 2024 18:26:41 +0200 Subject: [PATCH] (slop) Translate nulls to empty strings when passed to the StringColumnWriters. --- .../slop/column/string/StringColumn.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/code/libraries/slop/java/nu/marginalia/slop/column/string/StringColumn.java b/code/libraries/slop/java/nu/marginalia/slop/column/string/StringColumn.java index 32cdc99a..14424f71 100644 --- a/code/libraries/slop/java/nu/marginalia/slop/column/string/StringColumn.java +++ b/code/libraries/slop/java/nu/marginalia/slop/column/string/StringColumn.java @@ -44,6 +44,10 @@ public class StringColumn { } public void put(String value) throws IOException { + if (null == value) { + value = ""; + } + backingColumn.put(value.getBytes()); } @@ -93,6 +97,10 @@ public class StringColumn { } public void put(String value) throws IOException { + if (null == value) { + value = ""; + } + assert value.indexOf('\0') == -1 : "Null byte not allowed in cstring"; storageWriter.putBytes(value.getBytes()); storageWriter.putByte((byte) 0); @@ -155,6 +163,10 @@ public class StringColumn { } public void put(String value) throws IOException { + if (null == value) { + value = ""; + } + assert value.indexOf('\n') == -1 : "Newline not allowed in txtstring"; storageWriter.putBytes(value.getBytes()); @@ -176,8 +188,14 @@ public class StringColumn { public String get() throws IOException { StringBuilder sb = new StringBuilder(); byte b; - while (storageReader.hasRemaining() && (b = storageReader.getByte()) != '\n') { - sb.append((char) b); + while (storageReader.hasRemaining()) { + b = storageReader.getByte(); + if (b == '\n') { + break; + } + else { + sb.append((char) b); + } } return sb.toString(); }