Browse Source
plotting/grid.c, bug fix, avoid string buffer overflow
plotting/grid.c, bug fix, avoid string buffer overflow
Prevent a crash of example/FFT_test.cir.
Buffer 'buf' in function drawlingrid() has been too small.
Increase 'buf' size, and add some protection.
The example file examples/plot/test-small-plot.cir
shows the limits of plotting:
difference in two numbers at digit 14 is plotted well.
at digit 15 is plotted with bugs.
at digit 16 is reduced to integer.
consider compiling with
-O1 -D_FORTIFY_SOURCE=2
for gcc, and
/GS
for visual studio.
pre-master-46
committed by
rlar
3 changed files with 128 additions and 10 deletions
@ -0,0 +1,116 @@ |
|||
resolution test for plotting |
|||
.control |
|||
let xvar = vector(4) |
|||
let yvar = vector(4) |
|||
|
|||
* -------------------- |
|||
* integer |
|||
let yvar[0] = 1.0 |
|||
let yvar[1] = 1.0 |
|||
let yvar[2] = 1.0 |
|||
let yvar[3] = 1.0 |
|||
|
|||
plot yvar vs xvar title integer 1 |
|||
|
|||
* -------------------- |
|||
* 14 digits |
|||
let yvar[0] = 1.0 |
|||
let yvar[1] = 1.00000000000001 |
|||
let yvar[2] = 0.99999999999999 |
|||
let yvar[3] = 1.0 |
|||
|
|||
plot yvar vs xvar title '14 digits' |
|||
|
|||
* -------------------- |
|||
* 15 digits |
|||
let yvar[0] = 1.0 |
|||
let yvar[1] = 1.000000000000001 |
|||
let yvar[2] = 0.999999999999999 |
|||
let yvar[3] = 1.0 |
|||
|
|||
plot yvar vs xvar title '15 digits' |
|||
|
|||
* -------------------- |
|||
* 16 digits |
|||
let yvar[0] = 1.0 |
|||
let yvar[1] = 1.0000000000000001 |
|||
let yvar[2] = 0.9999999999999999 |
|||
let yvar[3] = 1.0 |
|||
|
|||
plot yvar vs xvar title '16 digits' |
|||
|
|||
* -------------------- |
|||
* 14 digits plus exponent |
|||
let yvar[0] = 1.0e-14 |
|||
let yvar[1] = 1.00000000000001e-14 |
|||
let yvar[2] = 0.99999999999999e-14 |
|||
let yvar[3] = 1.0e-14 |
|||
|
|||
plot yvar vs xvar title '14 digits plus exponent' |
|||
|
|||
* -------------------- |
|||
* 15 digits plus exponent |
|||
let yvar[0] = 1.0e-14 |
|||
let yvar[1] = 1.000000000000001e-14 |
|||
let yvar[2] = 0.999999999999999e-14 |
|||
let yvar[3] = 1.0e-14 |
|||
|
|||
plot yvar vs xvar title '15 digits plus exponent' |
|||
|
|||
* -------------------- |
|||
* 16 digits plus exponent |
|||
let yvar[0] = 1.0e-14 |
|||
let yvar[1] = 1.0000000000000001e-14 |
|||
let yvar[2] = 0.9999999999999999e-14 |
|||
let yvar[3] = 1.0e-14 |
|||
|
|||
plot yvar vs xvar title '16 digits plus exponent' |
|||
|
|||
* -------------------- |
|||
* negative 14 digits plus exponent |
|||
let yvar[0] = -1.0e-14 |
|||
let yvar[1] = -1.00000000000001e-14 |
|||
let yvar[2] = -0.99999999999999e-14 |
|||
let yvar[3] = -1.0e-14 |
|||
|
|||
plot yvar vs xvar title 'neg 14 digits plus exponent' |
|||
|
|||
* -------------------- |
|||
* negative 15 digits plus exponent |
|||
let yvar[0] = -1.0e-14 |
|||
let yvar[1] = -1.000000000000001e-14 |
|||
let yvar[2] = -0.999999999999999e-14 |
|||
let yvar[3] = -1.0e-14 |
|||
|
|||
plot yvar vs xvar title 'neg 15 digits plus exponent' |
|||
|
|||
* -------------------- |
|||
* negative 16 digits plus exponent |
|||
let yvar[0] = -1.0e-14 |
|||
let yvar[1] = -1.0000000000000001e-14 |
|||
let yvar[2] = -0.9999999999999999e-14 |
|||
let yvar[3] = -1.0e-14 |
|||
|
|||
plot yvar vs xvar title 'neg 16 digits plus exponent' |
|||
|
|||
* -------------------- |
|||
* 15 digits plus big exponent |
|||
let yvar[0] = 1.0e-200 |
|||
let yvar[1] = 1.000000000000001e-200 |
|||
let yvar[2] = 0.999999999999999e-200 |
|||
let yvar[3] = 1.0e-200 |
|||
|
|||
plot yvar vs xvar title '15 digits plus big exponent' |
|||
|
|||
* -------------------- |
|||
* negative 15 digits plus big exponent |
|||
let yvar[0] = -1.0e-200 |
|||
let yvar[1] = -1.000000000000001e-200 |
|||
let yvar[2] = -0.999999999999999e-200 |
|||
let yvar[3] = -1.0e-200 |
|||
|
|||
plot yvar vs xvar title 'neg 15 digits plus big exponent' |
|||
|
|||
.endc |
|||
|
|||
.end |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue