I have a contract that I've been able to successfully make web3 calls on. However, after adding this function to a new version of the contract:
function removeDevice(address owner, string dev_addr)public{
delete registeredTo[dev_addr];
for(uint i = 0; i < ownership[owner].length;i++){
if(keccak256(ownership[owner][i].device_address) == keccak256(dev_addr)){
ownership[owner][i] = ownership[owner][ownership[owner].length-1];
delete postedItems[owner][postedItems[owner].length-1];
postedItems[owner].length--;
break;
}
}
}
Every function that sends data to the contract generates a "new BigNumber() not a base 16 number: " error, and fails.
ownership[owner][i].device_address and dev_addr are both strings, and I assume the error is being generated by the comparison of the two, since other functions in my contract do similar operations without issue. I have also double-checked to make sure that I'm using the correct contract address and ABI, and I am using version 0.4.21 of Solidity, which appears to be the most up-to-date version, so I am certain that the issue stems from this block of code; I just cannot figure out how to go about fixing it.