@@ -229,59 +229,56 @@ SetTrust::preclaim(PreclaimContext const& ctx)
229
229
}
230
230
231
231
// Checking all freeze/deep freeze flag invariants.
232
- auto sleRippleState =
233
- ctx.view .read (keylet::line (id, uDstAccountID, currency));
234
-
235
- if (sleRippleState)
232
+ if (ctx.view .rules ().enabled (featureDeepFreeze))
236
233
{
237
- if (ctx.view .rules ().enabled (featureDeepFreeze))
238
- {
239
- bool const bNoFreeze = sle->isFlag (lsfNoFreeze);
240
- bool const bSetFreeze = (uTxFlags & tfSetFreeze);
241
- bool const bSetDeepFreeze = (uTxFlags & tfSetDeepFreeze);
234
+ bool const bNoFreeze = sle->isFlag (lsfNoFreeze);
235
+ bool const bSetFreeze = (uTxFlags & tfSetFreeze);
236
+ bool const bSetDeepFreeze = (uTxFlags & tfSetDeepFreeze);
242
237
243
- if (bNoFreeze)
244
- {
245
- if (bSetFreeze || bSetDeepFreeze)
246
- {
247
- // Cannot freeze the trust line if NoFreeze is set
248
- return tecNO_PERMISSION;
249
- }
250
- }
251
- bool const bClearFreeze = (uTxFlags & tfClearFreeze);
252
- bool const bClearDeepFreeze = (uTxFlags & tfClearDeepFreeze);
253
- if ((bSetFreeze || bSetDeepFreeze) &&
254
- (bClearFreeze || bClearDeepFreeze))
238
+ if (bNoFreeze)
239
+ {
240
+ if (bSetFreeze || bSetDeepFreeze)
255
241
{
256
- // Freezing and unfreezing in the same transaction should be
257
- // illegal
242
+ // Cannot freeze the trust line if NoFreeze is set
258
243
return tecNO_PERMISSION;
259
244
}
245
+ }
246
+ bool const bClearFreeze = (uTxFlags & tfClearFreeze);
247
+ bool const bClearDeepFreeze = (uTxFlags & tfClearDeepFreeze);
248
+ if ((bSetFreeze || bSetDeepFreeze) &&
249
+ (bClearFreeze || bClearDeepFreeze))
250
+ {
251
+ // Freezing and unfreezing in the same transaction should be
252
+ // illegal
253
+ return tecNO_PERMISSION;
254
+ }
260
255
261
- bool const bHigh = id > uDstAccountID;
262
- // Fetching current state of trust line
263
- std::uint32_t uFlags = sleRippleState->getFieldU32 (sfFlags);
264
- // Computing expected trust line state
265
- uFlags = applyFreezeFlags (
266
- uFlags,
267
- bHigh,
268
- bNoFreeze,
269
- bSetFreeze,
270
- bClearFreeze,
271
- bSetDeepFreeze,
272
- bClearDeepFreeze);
273
-
274
- auto const frozen = uFlags & (bHigh ? lsfHighFreeze : lsfLowFreeze);
275
- auto const deepFrozen =
276
- uFlags & (bHigh ? lsfHighDeepFreeze : lsfLowDeepFreeze);
277
-
278
- // Trying to set deep freeze on not already frozen trust line must
279
- // fail. This also checks that clearing normal freeze while deep
280
- // frozen must not work
281
- if (deepFrozen && !frozen)
282
- {
283
- return tecNO_PERMISSION;
284
- }
256
+ bool const bHigh = id > uDstAccountID;
257
+ // Fetching current state of trust line
258
+ auto const sleRippleState =
259
+ ctx.view .read (keylet::line (id, uDstAccountID, currency));
260
+ std::uint32_t uFlags =
261
+ sleRippleState ? sleRippleState->getFieldU32 (sfFlags) : 0u ;
262
+ // Computing expected trust line state
263
+ uFlags = applyFreezeFlags (
264
+ uFlags,
265
+ bHigh,
266
+ bNoFreeze,
267
+ bSetFreeze,
268
+ bClearFreeze,
269
+ bSetDeepFreeze,
270
+ bClearDeepFreeze);
271
+
272
+ auto const frozen = uFlags & (bHigh ? lsfHighFreeze : lsfLowFreeze);
273
+ auto const deepFrozen =
274
+ uFlags & (bHigh ? lsfHighDeepFreeze : lsfLowDeepFreeze);
275
+
276
+ // Trying to set deep freeze on not already frozen trust line must
277
+ // fail. This also checks that clearing normal freeze while deep
278
+ // frozen must not work
279
+ if (deepFrozen && !frozen)
280
+ {
281
+ return tecNO_PERMISSION;
285
282
}
286
283
}
287
284
0 commit comments