mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-27 07:06:42 +00:00
Encode metadata as JSON String, rather than as JSON object
Ensures that we can decode to a set of bytes that will be consistent with the swarm hash embedded in the code, without worrying about ambiguities of spacing, ordering, or escaping.
This commit is contained in:
parent
87a22c400f
commit
c10f65a1a9
1 changed files with 7 additions and 3 deletions
|
|
@ -54,7 +54,7 @@ type ContractInfo struct {
|
|||
AbiDefinition interface{} `json:"abiDefinition"`
|
||||
UserDoc interface{} `json:"userDoc"`
|
||||
DeveloperDoc interface{} `json:"developerDoc"`
|
||||
Metadata interface{} `json:"metadata"`
|
||||
Metadata string `json:"metadata"`
|
||||
}
|
||||
|
||||
// Solidity contains information about the solidity compiler.
|
||||
|
|
@ -201,9 +201,13 @@ func runsolc(cmd *exec.Cmd, solcParams []string, source string) (map[string]*Con
|
|||
if err := json.Unmarshal([]byte(info.Devdoc), &devdoc); err != nil {
|
||||
return nil, fmt.Errorf("solc: error reading dev doc: %v", err)
|
||||
}
|
||||
var metadata interface{}
|
||||
var metadata string
|
||||
if info.Metadata != "" {
|
||||
if err := json.Unmarshal([]byte(info.Metadata), &metadata); err != nil {
|
||||
jstring, err := json.Marshal( string(info.Metadata) )
|
||||
if ( err != nil ) {
|
||||
return nil, fmt.Errorf("solc: error coercing metadata to string: %v", err)
|
||||
}
|
||||
if err := json.Unmarshal(jstring, &metadata); err != nil {
|
||||
return nil, fmt.Errorf("solc: error reading metadata: %v", err)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue