Skip to content

Commit 4324bd2

Browse files
committed
Merge #8311: Rename CTxinWitness -> CTxInWitness
36ae37a Rename CTxinWitness -> CTxInWitness (Bob McElrath)
2 parents 1bc9c80 + 36ae37a commit 4324bd2

File tree

6 files changed

+40
-40
lines changed

6 files changed

+40
-40
lines changed

qa/rpc-tests/p2p-segwit.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ def test_unnecessary_witness_before_segwit_activation(self):
252252
tx = CTransaction()
253253
tx.vin.append(CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b""))
254254
tx.vout.append(CTxOut(self.utxo[0].nValue-1000, CScript([OP_TRUE])))
255-
tx.wit.vtxinwit.append(CTxinWitness())
255+
tx.wit.vtxinwit.append(CTxInWitness())
256256
tx.wit.vtxinwit[0].scriptWitness.stack = [CScript([CScriptNum(1)])]
257257

258258
# Verify the hash with witness differs from the txid
@@ -362,7 +362,7 @@ def test_witness_commitments(self):
362362
tx2 = CTransaction()
363363
tx2.vin.append(CTxIn(COutPoint(tx.sha256, 0), b""))
364364
tx2.vout.append(CTxOut(tx.vout[0].nValue-1000, witness_program))
365-
tx2.wit.vtxinwit.append(CTxinWitness())
365+
tx2.wit.vtxinwit.append(CTxInWitness())
366366
tx2.wit.vtxinwit[0].scriptWitness.stack = [witness_program]
367367
tx2.rehash()
368368

@@ -489,7 +489,7 @@ def test_witness_block_size(self):
489489
child_tx.vin.append(CTxIn(COutPoint(parent_tx.sha256, i), b""))
490490
child_tx.vout = [CTxOut(value - 100000, CScript([OP_TRUE]))]
491491
for i in range(NUM_OUTPUTS):
492-
child_tx.wit.vtxinwit.append(CTxinWitness())
492+
child_tx.wit.vtxinwit.append(CTxInWitness())
493493
child_tx.wit.vtxinwit[-1].scriptWitness.stack = [b'a'*195]*(2*NUM_DROPS) + [witness_program]
494494
child_tx.rehash()
495495
self.update_witness_block_with_transactions(block, [parent_tx, child_tx])
@@ -584,7 +584,7 @@ def test_extra_witness_data(self):
584584
tx.vin.append(CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b""))
585585
tx.vout.append(CTxOut(self.utxo[0].nValue-2000, scriptPubKey))
586586
tx.vout.append(CTxOut(1000, CScript([OP_TRUE]))) # non-witness output
587-
tx.wit.vtxinwit.append(CTxinWitness())
587+
tx.wit.vtxinwit.append(CTxInWitness())
588588
tx.wit.vtxinwit[0].scriptWitness.stack = [CScript([])]
589589
tx.rehash()
590590
self.update_witness_block_with_transactions(block, [tx])
@@ -607,7 +607,7 @@ def test_extra_witness_data(self):
607607
tx2.vin.append(CTxIn(COutPoint(tx.sha256, 0), b"")) # witness output
608608
tx2.vin.append(CTxIn(COutPoint(tx.sha256, 1), b"")) # non-witness
609609
tx2.vout.append(CTxOut(tx.vout[0].nValue, CScript([OP_TRUE])))
610-
tx2.wit.vtxinwit.extend([CTxinWitness(), CTxinWitness()])
610+
tx2.wit.vtxinwit.extend([CTxInWitness(), CTxInWitness()])
611611
tx2.wit.vtxinwit[0].scriptWitness.stack = [ CScript([CScriptNum(1)]), CScript([CScriptNum(1)]), witness_program ]
612612
tx2.wit.vtxinwit[1].scriptWitness.stack = [ CScript([OP_TRUE]) ]
613613

@@ -663,7 +663,7 @@ def test_max_witness_push_length(self):
663663
tx2 = CTransaction()
664664
tx2.vin.append(CTxIn(COutPoint(tx.sha256, 0), b""))
665665
tx2.vout.append(CTxOut(tx.vout[0].nValue-1000, CScript([OP_TRUE])))
666-
tx2.wit.vtxinwit.append(CTxinWitness())
666+
tx2.wit.vtxinwit.append(CTxInWitness())
667667
# First try a 521-byte stack element
668668
tx2.wit.vtxinwit[0].scriptWitness.stack = [ b'a'*(MAX_SCRIPT_ELEMENT_SIZE+1), witness_program ]
669669
tx2.rehash()
@@ -705,7 +705,7 @@ def test_max_witness_program_length(self):
705705
tx2 = CTransaction()
706706
tx2.vin.append(CTxIn(COutPoint(tx.sha256, 0), b""))
707707
tx2.vout.append(CTxOut(tx.vout[0].nValue-1000, CScript([OP_TRUE])))
708-
tx2.wit.vtxinwit.append(CTxinWitness())
708+
tx2.wit.vtxinwit.append(CTxInWitness())
709709
tx2.wit.vtxinwit[0].scriptWitness.stack = [b'a']*44 + [long_witness_program]
710710
tx2.rehash()
711711

@@ -782,7 +782,7 @@ def serialize_with_witness(self):
782782

783783
# First try using a too long vtxinwit
784784
for i in range(11):
785-
tx2.wit.vtxinwit.append(CTxinWitness())
785+
tx2.wit.vtxinwit.append(CTxInWitness())
786786
tx2.wit.vtxinwit[i].scriptWitness.stack = [b'a', witness_program]
787787

788788
block = self.build_next_block()
@@ -798,7 +798,7 @@ def serialize_with_witness(self):
798798
self.test_node.test_witness_block(block, accepted=False)
799799

800800
# Now make one of the intermediate witnesses be incorrect
801-
tx2.wit.vtxinwit.append(CTxinWitness())
801+
tx2.wit.vtxinwit.append(CTxInWitness())
802802
tx2.wit.vtxinwit[-1].scriptWitness.stack = [b'a', witness_program]
803803
tx2.wit.vtxinwit[5].scriptWitness.stack = [ witness_program ]
804804

@@ -825,7 +825,7 @@ def test_witness_tx_relay_before_segwit_activation(self):
825825
tx = CTransaction()
826826
tx.vin.append(CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b""))
827827
tx.vout.append(CTxOut(self.utxo[0].nValue-1000, CScript([OP_TRUE])))
828-
tx.wit.vtxinwit.append(CTxinWitness())
828+
tx.wit.vtxinwit.append(CTxInWitness())
829829
tx.wit.vtxinwit[0].scriptWitness.stack = [ b'a' ]
830830
tx.rehash()
831831

@@ -885,7 +885,7 @@ def test_tx_relay_after_segwit_activation(self):
885885
tx = CTransaction()
886886
tx.vin.append(CTxIn(COutPoint(self.utxo[0].sha256, self.utxo[0].n), b""))
887887
tx.vout.append(CTxOut(self.utxo[0].nValue-1000, CScript([OP_TRUE])))
888-
tx.wit.vtxinwit.append(CTxinWitness())
888+
tx.wit.vtxinwit.append(CTxInWitness())
889889
tx.wit.vtxinwit[0].scriptWitness.stack = [ b'a' ]
890890
tx.rehash()
891891

@@ -914,7 +914,7 @@ def test_tx_relay_after_segwit_activation(self):
914914
tx3 = CTransaction()
915915
tx3.vin.append(CTxIn(COutPoint(tx2.sha256, 0), b""))
916916
tx3.vout.append(CTxOut(tx2.vout[0].nValue-1000, CScript([OP_TRUE])))
917-
tx3.wit.vtxinwit.append(CTxinWitness())
917+
tx3.wit.vtxinwit.append(CTxInWitness())
918918
tx3.wit.vtxinwit[0].scriptWitness.stack = [CScript([CScriptNum(1)]), witness_program ]
919919
tx3.rehash()
920920

@@ -1087,7 +1087,7 @@ def test_segwit_versions(self):
10871087
tx2 = CTransaction()
10881088
tx2.vin = [CTxIn(COutPoint(tx.sha256, 0), b"")]
10891089
tx2.vout = [CTxOut(tx.vout[0].nValue-1000, scriptPubKey)]
1090-
tx2.wit.vtxinwit.append(CTxinWitness())
1090+
tx2.wit.vtxinwit.append(CTxInWitness())
10911091
tx2.wit.vtxinwit[0].scriptWitness.stack = [ witness_program ]
10921092
tx2.rehash()
10931093
# Gets accepted to test_node, because standardness of outputs isn't
@@ -1102,7 +1102,7 @@ def test_segwit_versions(self):
11021102
total_value = 0
11031103
for i in temp_utxo:
11041104
tx3.vin.append(CTxIn(COutPoint(i.sha256, i.n), b""))
1105-
tx3.wit.vtxinwit.append(CTxinWitness())
1105+
tx3.wit.vtxinwit.append(CTxInWitness())
11061106
total_value += i.nValue
11071107
tx3.wit.vtxinwit[-1].scriptWitness.stack = [witness_program]
11081108
tx3.vout.append(CTxOut(total_value - 1000, CScript([OP_TRUE])))
@@ -1140,7 +1140,7 @@ def test_premature_coinbase_witness_spend(self):
11401140
spend_tx = CTransaction()
11411141
spend_tx.vin = [CTxIn(COutPoint(block.vtx[0].sha256, 0), b"")]
11421142
spend_tx.vout = [CTxOut(block.vtx[0].vout[0].nValue, witness_program)]
1143-
spend_tx.wit.vtxinwit.append(CTxinWitness())
1143+
spend_tx.wit.vtxinwit.append(CTxInWitness())
11441144
spend_tx.wit.vtxinwit[0].scriptWitness.stack = [ witness_program ]
11451145
spend_tx.rehash()
11461146

@@ -1200,7 +1200,7 @@ def sign_P2PK_witness_input(script, txTo, inIdx, hashtype, value, key):
12001200
tx = CTransaction()
12011201
tx.vin.append(CTxIn(COutPoint(prev_utxo.sha256, prev_utxo.n), b""))
12021202
tx.vout.append(CTxOut(prev_utxo.nValue - 1000, scriptPubKey))
1203-
tx.wit.vtxinwit.append(CTxinWitness())
1203+
tx.wit.vtxinwit.append(CTxInWitness())
12041204
# Too-large input value
12051205
sign_P2PK_witness_input(witness_program, tx, 0, hashtype, prev_utxo.nValue+1, key)
12061206
self.update_witness_block_with_transactions(block, [tx])
@@ -1233,7 +1233,7 @@ def sign_P2PK_witness_input(script, txTo, inIdx, hashtype, value, key):
12331233
split_value = prev_utxo.nValue // NUM_TESTS
12341234
for i in range(NUM_TESTS):
12351235
tx.vout.append(CTxOut(split_value, scriptPubKey))
1236-
tx.wit.vtxinwit.append(CTxinWitness())
1236+
tx.wit.vtxinwit.append(CTxInWitness())
12371237
sign_P2PK_witness_input(witness_program, tx, 0, SIGHASH_ALL, prev_utxo.nValue, key)
12381238
for i in range(NUM_TESTS):
12391239
temp_utxos.append(UTXO(tx.sha256, i, split_value))
@@ -1255,7 +1255,7 @@ def sign_P2PK_witness_input(script, txTo, inIdx, hashtype, value, key):
12551255
total_value = 0
12561256
for i in range(num_inputs):
12571257
tx.vin.append(CTxIn(COutPoint(temp_utxos[i].sha256, temp_utxos[i].n), b""))
1258-
tx.wit.vtxinwit.append(CTxinWitness())
1258+
tx.wit.vtxinwit.append(CTxInWitness())
12591259
total_value += temp_utxos[i].nValue
12601260
split_value = total_value // num_outputs
12611261
for i in range(num_outputs):
@@ -1295,7 +1295,7 @@ def sign_P2PK_witness_input(script, txTo, inIdx, hashtype, value, key):
12951295
tx = CTransaction()
12961296
tx.vin.append(CTxIn(COutPoint(temp_utxos[0].sha256, temp_utxos[0].n), b""))
12971297
tx.vout.append(CTxOut(temp_utxos[0].nValue, scriptPKH))
1298-
tx.wit.vtxinwit.append(CTxinWitness())
1298+
tx.wit.vtxinwit.append(CTxInWitness())
12991299
sign_P2PK_witness_input(witness_program, tx, 0, SIGHASH_ALL, temp_utxos[0].nValue, key)
13001300
tx2 = CTransaction()
13011301
tx2.vin.append(CTxIn(COutPoint(tx.sha256, 0), b""))
@@ -1313,7 +1313,7 @@ def sign_P2PK_witness_input(script, txTo, inIdx, hashtype, value, key):
13131313

13141314
# Move the signature to the witness.
13151315
block.vtx.pop()
1316-
tx2.wit.vtxinwit.append(CTxinWitness())
1316+
tx2.wit.vtxinwit.append(CTxInWitness())
13171317
tx2.wit.vtxinwit[0].scriptWitness.stack = [signature, pubkey]
13181318
tx2.vin[0].scriptSig = b""
13191319
tx2.rehash()
@@ -1333,7 +1333,7 @@ def sign_P2PK_witness_input(script, txTo, inIdx, hashtype, value, key):
13331333
# the signatures as we go.
13341334
tx.vin.append(CTxIn(COutPoint(i.sha256, i.n), b""))
13351335
tx.vout.append(CTxOut(i.nValue, CScript([OP_TRUE])))
1336-
tx.wit.vtxinwit.append(CTxinWitness())
1336+
tx.wit.vtxinwit.append(CTxInWitness())
13371337
sign_P2PK_witness_input(witness_program, tx, index, SIGHASH_SINGLE|SIGHASH_ANYONECANPAY, i.nValue, key)
13381338
index += 1
13391339
block = self.build_next_block()
@@ -1393,7 +1393,7 @@ def test_p2sh_witness(self, segwit_activated):
13931393
# segwit activates.
13941394
spend_tx.vin[0].scriptSig = scriptSig
13951395
spend_tx.rehash()
1396-
spend_tx.wit.vtxinwit.append(CTxinWitness())
1396+
spend_tx.wit.vtxinwit.append(CTxInWitness())
13971397
spend_tx.wit.vtxinwit[0].scriptWitness.stack = [ b'a', witness_program ]
13981398

13991399
# Verify mempool acceptance
@@ -1499,7 +1499,7 @@ def test_witness_sigops(self):
14991499
total_value = 0
15001500
for i in range(outputs-1):
15011501
tx2.vin.append(CTxIn(COutPoint(tx.sha256, i), b""))
1502-
tx2.wit.vtxinwit.append(CTxinWitness())
1502+
tx2.wit.vtxinwit.append(CTxInWitness())
15031503
tx2.wit.vtxinwit[-1].scriptWitness.stack = [ witness_program ]
15041504
total_value += tx.vout[i].nValue
15051505
tx2.wit.vtxinwit[-1].scriptWitness.stack = [ witness_program_toomany ]
@@ -1540,7 +1540,7 @@ def test_witness_sigops(self):
15401540
block_5 = self.build_next_block()
15411541
tx2.vout.pop()
15421542
tx2.vin.append(CTxIn(COutPoint(tx.sha256, outputs-1), b""))
1543-
tx2.wit.vtxinwit.append(CTxinWitness())
1543+
tx2.wit.vtxinwit.append(CTxInWitness())
15441544
tx2.wit.vtxinwit[-1].scriptWitness.stack = [ witness_program_justright ]
15451545
tx2.rehash()
15461546
self.update_witness_block_with_transactions(block_5, [tx2])

qa/rpc-tests/test_framework/blocktools.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def add_witness_commitment(block, nonce=0):
3434
witness_root = block.calc_witness_merkle_root()
3535
witness_commitment = uint256_from_str(hash256(ser_uint256(witness_root)+ser_uint256(witness_nonce)))
3636
# witness_nonce should go to coinbase witness.
37-
block.vtx[0].wit.vtxinwit = [CTxinWitness()]
37+
block.vtx[0].wit.vtxinwit = [CTxInWitness()]
3838
block.vtx[0].wit.vtxinwit[0].scriptWitness.stack = [ser_uint256(witness_nonce)]
3939

4040
# witness commitment is the last OP_RETURN output in coinbase

qa/rpc-tests/test_framework/mininode.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ def is_null(self):
419419
return True
420420

421421

422-
class CTxinWitness(object):
422+
class CTxInWitness(object):
423423
def __init__(self):
424424
self.scriptWitness = CScriptWitness()
425425

@@ -497,7 +497,7 @@ def deserialize(self, f):
497497
else:
498498
self.vout = deser_vector(f, CTxOut)
499499
if flags != 0:
500-
self.wit.vtxinwit = [CTxinWitness()]*len(self.vin)
500+
self.wit.vtxinwit = [CTxInWitness()]*len(self.vin)
501501
self.wit.deserialize(f)
502502
self.nLockTime = struct.unpack("<I", f.read(4))[0]
503503
self.sha256 = None
@@ -529,7 +529,7 @@ def serialize_with_witness(self):
529529
# vtxinwit must have the same length as vin
530530
self.wit.vtxinwit = self.wit.vtxinwit[:len(self.vin)]
531531
for i in range(len(self.wit.vtxinwit), len(self.vin)):
532-
self.wit.vtxinwit.append(CTxinWitness())
532+
self.wit.vtxinwit.append(CTxInWitness())
533533
r += self.wit.serialize()
534534
r += struct.pack("<I", self.nLockTime)
535535
return r

src/core_memusage.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ static inline size_t RecursiveDynamicUsage(const CScriptWitness& scriptWit) {
3333
return mem;
3434
}
3535

36-
static inline size_t RecursiveDynamicUsage(const CTxinWitness& txinwit) {
36+
static inline size_t RecursiveDynamicUsage(const CTxInWitness& txinwit) {
3737
return RecursiveDynamicUsage(txinwit.scriptWitness);
3838
}
3939

4040
static inline size_t RecursiveDynamicUsage(const CTxWitness& txwit) {
4141
size_t mem = memusage::DynamicUsage(txwit.vtxinwit);
42-
for (std::vector<CTxinWitness>::const_iterator it = txwit.vtxinwit.begin(); it != txwit.vtxinwit.end(); it++) {
42+
for (std::vector<CTxInWitness>::const_iterator it = txwit.vtxinwit.begin(); it != txwit.vtxinwit.end(); it++) {
4343
mem += RecursiveDynamicUsage(*it);
4444
}
4545
return mem;

src/primitives/transaction.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ class CTxOut
213213
std::string ToString() const;
214214
};
215215

216-
class CTxinWitness
216+
class CTxInWitness
217217
{
218218
public:
219219
CScriptWitness scriptWitness;
@@ -228,14 +228,14 @@ class CTxinWitness
228228

229229
bool IsNull() const { return scriptWitness.IsNull(); }
230230

231-
CTxinWitness() { }
231+
CTxInWitness() { }
232232
};
233233

234234
class CTxWitness
235235
{
236236
public:
237237
/** In case vtxinwit is missing, all entries are treated as if they were empty CTxInWitnesses */
238-
std::vector<CTxinWitness> vtxinwit;
238+
std::vector<CTxInWitness> vtxinwit;
239239

240240
ADD_SERIALIZE_METHODS;
241241

src/test/sigopcount_tests.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ ScriptError VerifyWithFlag(const CTransaction& output, const CMutableTransaction
8484
* and witness such that spendingTx spends output zero of creationTx.
8585
* Also inserts creationTx's output into the coins view.
8686
*/
87-
void BuildTxs(CMutableTransaction& spendingTx, CCoinsViewCache& coins, CMutableTransaction& creationTx, const CScript& scriptPubKey, const CScript& scriptSig, const CTxinWitness& witness)
87+
void BuildTxs(CMutableTransaction& spendingTx, CCoinsViewCache& coins, CMutableTransaction& creationTx, const CScript& scriptPubKey, const CScript& scriptSig, const CTxInWitness& witness)
8888
{
8989
creationTx.nVersion = 1;
9090
creationTx.vin.resize(1);
@@ -133,7 +133,7 @@ BOOST_AUTO_TEST_CASE(GetTxSigOpCost)
133133
// Do not use a valid signature to avoid using wallet operations.
134134
CScript scriptSig = CScript() << OP_0 << OP_0;
135135

136-
BuildTxs(spendingTx, coins, creationTx, scriptPubKey, scriptSig, CTxinWitness());
136+
BuildTxs(spendingTx, coins, creationTx, scriptPubKey, scriptSig, CTxInWitness());
137137
// Legacy counting only includes signature operations in scriptSigs and scriptPubKeys
138138
// of a transaction and does not take the actual executed sig operations into account.
139139
// spendingTx in itself does not contain a signature operation.
@@ -151,7 +151,7 @@ BOOST_AUTO_TEST_CASE(GetTxSigOpCost)
151151
CScript scriptPubKey = GetScriptForDestination(CScriptID(redeemScript));
152152
CScript scriptSig = CScript() << OP_0 << OP_0 << ToByteVector(redeemScript);
153153

154-
BuildTxs(spendingTx, coins, creationTx, scriptPubKey, scriptSig, CTxinWitness());
154+
BuildTxs(spendingTx, coins, creationTx, scriptPubKey, scriptSig, CTxInWitness());
155155
assert(GetTransactionSigOpCost(CTransaction(spendingTx), coins, flags) == 2 * WITNESS_SCALE_FACTOR);
156156
assert(VerifyWithFlag(creationTx, spendingTx, flags) == SCRIPT_ERR_CHECKMULTISIGVERIFY);
157157
}
@@ -161,7 +161,7 @@ BOOST_AUTO_TEST_CASE(GetTxSigOpCost)
161161
CScript p2pk = CScript() << ToByteVector(pubkey) << OP_CHECKSIG;
162162
CScript scriptPubKey = GetScriptForWitness(p2pk);
163163
CScript scriptSig = CScript();
164-
CTxinWitness witness;
164+
CTxInWitness witness;
165165
CScriptWitness scriptWitness;
166166
scriptWitness.stack.push_back(vector<unsigned char>(0));
167167
scriptWitness.stack.push_back(vector<unsigned char>(0));
@@ -193,7 +193,7 @@ BOOST_AUTO_TEST_CASE(GetTxSigOpCost)
193193
CScript scriptSig = GetScriptForWitness(p2pk);
194194
CScript scriptPubKey = GetScriptForDestination(CScriptID(scriptSig));
195195
scriptSig = CScript() << ToByteVector(scriptSig);
196-
CTxinWitness witness;
196+
CTxInWitness witness;
197197
CScriptWitness scriptWitness;
198198
scriptWitness.stack.push_back(vector<unsigned char>(0));
199199
scriptWitness.stack.push_back(vector<unsigned char>(0));
@@ -209,7 +209,7 @@ BOOST_AUTO_TEST_CASE(GetTxSigOpCost)
209209
CScript witnessScript = CScript() << 1 << ToByteVector(pubkey) << ToByteVector(pubkey) << 2 << OP_CHECKMULTISIGVERIFY;
210210
CScript scriptPubKey = GetScriptForWitness(witnessScript);
211211
CScript scriptSig = CScript();
212-
CTxinWitness witness;
212+
CTxInWitness witness;
213213
CScriptWitness scriptWitness;
214214
scriptWitness.stack.push_back(vector<unsigned char>(0));
215215
scriptWitness.stack.push_back(vector<unsigned char>(0));
@@ -228,7 +228,7 @@ BOOST_AUTO_TEST_CASE(GetTxSigOpCost)
228228
CScript redeemScript = GetScriptForWitness(witnessScript);
229229
CScript scriptPubKey = GetScriptForDestination(CScriptID(redeemScript));
230230
CScript scriptSig = CScript() << ToByteVector(redeemScript);
231-
CTxinWitness witness;
231+
CTxInWitness witness;
232232
CScriptWitness scriptWitness;
233233
scriptWitness.stack.push_back(vector<unsigned char>(0));
234234
scriptWitness.stack.push_back(vector<unsigned char>(0));

0 commit comments

Comments
 (0)