Compare commits

..
Author SHA1 Message Date
gronod a07a5d638d Merge pull request 'Merge development into main (v3.5.0-ICCery.1.2)' (#26) from development into main
Windows x86_64 Release Build / build (push) Successful in 9m11s
Linux x86_64 Release Build / build (push) Successful in 9m26s
Merge pull request #26 from development into main
2026-08-29 14:39:39 +01:00
gronod 5b75dd4284 Merge pull request 'Fix: Use PeekNamedPipe to prevent blocking ReadFile on anonymous stdin pipes' (#25) from fix/win32-pipe-peek-named-pipe into development
Merge pull request #25 from fix/win32-pipe-peek-named-pipe into development
2026-08-29 14:39:29 +01:00
gronod fb6b37bade fix(spectro): use PeekNamedPipe to prevent blocking ReadFile on anonymous stdin pipes (fixes #24) 2026-08-29 14:39:08 +01:00
gronod b02df94744 Merge pull request 'Merge development into main (v3.5.0-ICCery.1.1)' (#23) from development into main
Windows x86_64 Release Build / build (push) Successful in 9m34s
Linux x86_64 Release Build / build (push) Successful in 9m41s
Merge pull request #23 from development into main
2026-08-28 20:23:45 +01:00
gronod 429c772e4a Merge pull request 'Fix: Sanitize manifest CRLF line endings and complete Windows release packaging' (#22) from fix/windows-package-crlf-manifests into development
Merge pull request #22 from fix/windows-package-crlf-manifests into development
2026-08-28 20:23:35 +01:00
gronod fe0230b3d5 Merge branch 'development' into main
Windows x86_64 Release Build / build (push) Successful in 7m43s
Linux x86_64 Release Build / build (push) Successful in 10m3s
2026-08-26 01:11:26 +01:00
gronod 885fa3fee8 Merge pull request 'Development' (#18) from development into main
Windows x86_64 Release Build / build (push) Has been cancelled
Linux x86_64 Release Build / build (push) Has been cancelled
Reviewed-on: #18
2026-08-26 01:02:30 +01:00
2 changed files with 14 additions and 12 deletions
+1
View File
@@ -19,6 +19,7 @@
<h1>[V3.4.1 -&gt; V3.5.0] 4th February 2026<br>
</h1>
<ul>
<li>Fixed non-blocking stdin polling deadlock on MSWindows anonymous pipes when running interactive measurement tools in subprocess mode.</li>
<li>Added -d switch to printtarg to allow custom chart label strings or omit labelling entirely.</li>
<li>Added MSWindows ARM release.</li>
<li>Added Mac ARM release.</li>
+13 -12
View File
@@ -203,36 +203,37 @@ static int con_char(int wait) {
/* We assume pipe has been set to NOWAIT mode. */
} else if (stdin_type == FILE_TYPE_PIPE) {
int i, bib;
//fprintf(stderr,"~1 top of pipe\n");
DWORD bytes_avail = 0;
/* Check available bytes in pipe before blocking */
if (!PeekNamedPipe(stdinh, NULL, 0, NULL, &bytes_avail, NULL) || bytes_avail == 0) {
if (!wait) {
return 0;
}
}
for (bib = 0; bib < 10;) {
//fprintf(stderr,"~1 got %d in buf\n",bib);
if (!wait) {
if (!PeekNamedPipe(stdinh, NULL, 0, NULL, &bytes_avail, NULL) || bytes_avail == 0) {
break;
}
}
if ((!ReadFile(stdinh, buf + bib, 10 - bib, &bread, NULL) || bread == 0)
&& !wait) {
//fprintf(stderr,"~1 no chars waiting\n");
break;
}
bib += bread;
for (i = 0; i < bib; i++) {
if (buf[i] == '\n' || buf[i] == '\r' || buf[i] == 0x3) {
//fprintf(stderr,"~1 found lf at ix %d\n",i);
break;
}
}
if (i < bib) {
//fprintf(stderr,"~1 found lf\n");
break; /* Found '\n' */
}
Sleep(100); /* Wait for a line ending in '\n' */
}
//if (bread > 0) {
//fprintf(stderr,"~1 read %d: ",bread);
//for (i = 0; i < bread; i++)
//fprintf(stderr," 0x%x",buf[i]);
//fprintf(stderr,"\n//");
//}
rv = buf[0];
/* Assume a file. This will have very limited functionality. */