Skip to content

Commit f520844

Browse files
committed
cli: fix raw payload conversion.
The CLI raw path was treating every variable payload as if it had a two-byte byte-length prefix: imports added one and exports stripped one. That corrupted fixed-size and metadata-prefixed types such as Real, lists, and matrices. This is now basically wrapping setContentFromData() / getRawContent().
1 parent 5f93214 commit f520844

2 files changed

Lines changed: 20 additions & 6 deletions

File tree

cli/cli.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -279,11 +279,8 @@ int main(int argc, char** argv)
279279
int filesize = in.tellg();
280280
in.seekg(0, ios::beg);
281281

282-
data_t data;
283-
data.resize(filesize + 2);
284-
data[0] = filesize & 0xFF;
285-
data[1] = (filesize >> 8) & 0xFF;
286-
in.read((char*) &data[2], filesize);
282+
data_t data(filesize);
283+
in.read((char*) data.data(), filesize);
287284
in.close();
288285

289286
file.setContentFromData(data);
@@ -318,7 +315,11 @@ int main(int argc, char** argv)
318315
cout << opath << ": Failed to open file" << endl;
319316
return 1;
320317
}
321-
out.write((char*) (&file.getRawContent()[2]), file.getRawContent().size() - 2);
318+
const data_t rawContent = file.getRawContent();
319+
if (!rawContent.empty())
320+
{
321+
out.write((char*) rawContent.data(), rawContent.size());
322+
}
322323
break;
323324
}
324325
case READABLE:

scripts/cli_smoke_tests.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
5+
TMP_DIR="${TMPDIR:-/tmp}/tivars_cli_smoke_tests"
6+
mkdir -p "$TMP_DIR"
7+
8+
CLI="$ROOT_DIR/tivars_cli"
9+
10+
printf '\x00\x80\x10\x00\x00\x00\x00\x00\x00' > "$TMP_DIR/one_real_raw.bin"
11+
"$CLI" -i "$TMP_DIR/one_real_raw.bin" -j raw -o "$TMP_DIR/one_real.8xn" -k varfile -t Real -n A
12+
"$CLI" -i "$TMP_DIR/one_real.8xn" -j varfile -o "$TMP_DIR/one_real_roundtrip.bin" -k raw
13+
cmp -s "$TMP_DIR/one_real_raw.bin" "$TMP_DIR/one_real_roundtrip.bin"

0 commit comments

Comments
 (0)