mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-19 02:12:23 +00:00
Fix std.out issues with eofparse
* In stdin mode ack good code with OK * remove or feature flag stray printlns. * use reader to accept potentially larget contracts
This commit is contained in:
parent
9edd35cefe
commit
24c56f2a4f
3 changed files with 23 additions and 10 deletions
|
|
@ -91,7 +91,7 @@ func eofParser(ctx *cli.Context) error {
|
||||||
}
|
}
|
||||||
return fmt.Errorf("err(%d): %w", errorMap[err.Error()], err)
|
return fmt.Errorf("err(%d): %w", errorMap[err.Error()], err)
|
||||||
}
|
}
|
||||||
fmt.Println("ok.")
|
fmt.Println("OK")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -138,19 +138,28 @@ func eofParser(ctx *cli.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If neither are passed in, read input from stdin.
|
// If neither are passed in, read input from stdin.
|
||||||
scanner := bufio.NewScanner(os.Stdin)
|
reader := bufio.NewReaderSize(os.Stdin, 1024*1024)
|
||||||
for scanner.Scan() {
|
t, err := reader.ReadString('\n')
|
||||||
t := strings.TrimSpace(scanner.Text())
|
for err == nil {
|
||||||
if len(t) == 0 || t[0] == '#' {
|
l := len(t)
|
||||||
|
if l == 0 || t[0] == '#' {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if _, err := parseAndValidate(t, false); err != nil {
|
if t[l-1] == '\n' {
|
||||||
|
t = t[:l-1] // remove newline
|
||||||
|
}
|
||||||
|
_, err := parseAndValidate(t, false)
|
||||||
|
if err != nil {
|
||||||
if err2 := errors.Unwrap(err); err2 != nil {
|
if err2 := errors.Unwrap(err); err2 != nil {
|
||||||
err = err2
|
err = err2
|
||||||
}
|
}
|
||||||
fmt.Fprintf(os.Stderr, "err(%d): %v\n", errorMap[err.Error()], err)
|
fmt.Printf("err(%d): %v\n", errorMap[err.Error()], err)
|
||||||
|
} else {
|
||||||
|
fmt.Println("OK")
|
||||||
}
|
}
|
||||||
|
t, err = reader.ReadString('\n')
|
||||||
}
|
}
|
||||||
|
println(err.Error())
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -180,7 +180,7 @@ func validateCode(code []byte, section int, container *Container, jt *JumpTable,
|
||||||
if paths, err := validateControlFlow2(code, section, container.Types, jt); err != nil {
|
if paths, err := validateControlFlow2(code, section, container.Types, jt); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else if paths != count {
|
} else if paths != count {
|
||||||
fmt.Printf("Paths: %v Count: %v\n", paths, count)
|
//fmt.Printf("Paths: %v Count: %v\n", paths, count)
|
||||||
// TODO(matt): return actual position of unreachable code
|
// TODO(matt): return actual position of unreachable code
|
||||||
return nil, ErrUnreachableCode
|
return nil, ErrUnreachableCode
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,9 @@ func validateControlFlow2(code []byte, section int, metadata []*FunctionMetadata
|
||||||
op := OpCode(code[pos])
|
op := OpCode(code[pos])
|
||||||
currentBounds := stackBounds[pos]
|
currentBounds := stackBounds[pos]
|
||||||
if currentBounds == nil {
|
if currentBounds == nil {
|
||||||
|
if debugging {
|
||||||
fmt.Printf("Stack bounds not set: %v at %v \n", op, pos)
|
fmt.Printf("Stack bounds not set: %v at %v \n", op, pos)
|
||||||
|
}
|
||||||
return 0, ErrUnreachableCode
|
return 0, ErrUnreachableCode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -196,7 +198,9 @@ func validateControlFlow2(code []byte, section int, metadata []*FunctionMetadata
|
||||||
return 0, ErrStackOverflow{maxStackHeight, int(params.StackLimit)}
|
return 0, ErrStackOverflow{maxStackHeight, int(params.StackLimit)}
|
||||||
}
|
}
|
||||||
if maxStackHeight != int(metadata[section].MaxStackHeight) {
|
if maxStackHeight != int(metadata[section].MaxStackHeight) {
|
||||||
|
if debugging {
|
||||||
fmt.Print(maxStackHeight, metadata[section].MaxStackHeight)
|
fmt.Print(maxStackHeight, metadata[section].MaxStackHeight)
|
||||||
|
}
|
||||||
return 0, fmt.Errorf("%w in code section %d: have %d, want %d", ErrInvalidMaxStackHeight, section, maxStackHeight, metadata[section].MaxStackHeight)
|
return 0, fmt.Errorf("%w in code section %d: have %d, want %d", ErrInvalidMaxStackHeight, section, maxStackHeight, metadata[section].MaxStackHeight)
|
||||||
}
|
}
|
||||||
return len(stackBounds), nil
|
return len(stackBounds), nil
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue