repo.or.cz
/
smatch.git
/
search
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
first
·
prev
·
next
math: handle MOD operation better
2013-02-07
D
an Carpenter
math: h
a
n
dle M
O
D
operation bette
r
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-06
Dan
Car
p
enter
*delete* bool_implication
s
: this file i
s
unused
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-06
D
an
Car
p
en
t
er
param_(
f
ilter|l
i
mit|set):
a
dd some comments
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-06
Dan Carpen
t
er
buf_size: don't crash on invalid code
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-06
Da
n
Carpenter
parse
_
call_ma
t
h: silence "
i
nternal bug
:
pop_val popping
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-06
Bart Van
A
ssche
Avoid triggering a division by zero
i
n th
e
overfl
o
w
.
.
.
commit
|
commitdiff
|
tree
2013-02-06
D
an Carpente
r
propagate
:
fall out from get_implied_
m
in() changes
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-06
D
a
n Carpen
t
er
extra: type b
u
g handling
e
mpty states in res
e
t
_
st
r
uct_
m
e
mbers()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-06
Dan Carpenter
ranges: don't al
l
ow
inverted ra
n
ges
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-06
Dan Carpe
n
ter
db: don't ge
t
print
i
nfo if th
e
functi
o
n
has ove
r
10000
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-05
Dan Carpente
r
math: don't return high
v
a
lues in get_fuzzy_max()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-04
Dan Carpenter
over
f
low: fix false positi
v
e all
o
c
a
tin
g
a
v
oid poin
t
er
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-04
Da
n
Carpenter
buf_size: fix bug caused by get_imp
l
i
e
d_max()
r
eturning
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-04
Dan Carpent
e
r
db:
p
rint less --info
f
o
r
a
few problem
a
ti
c
functions
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-04
Dan Carpenter
math
:
g
e
t
_
implied_max() sh
o
u
l
d be able to return
s32max
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-03
Dan
C
a
r
pent
e
r
sval: only print "s32max" if
t
he
v
alue is actually
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-03
Dan
Carpenter
math: get_implied_min() sh
o
uld be
able to
r
eturn s32min
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-03
Dan Carpen
t
er
ma
t
h: tweak get_
f
uzzy_math()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-03
Dan
Carpenter
ex
t
ra, db: handle
p
assing c
h
a
rs t
o
parameters which
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-01
Dan Carpenter
math:
use NOTIMPLIED instead of
H
ARD_MIN in opposite_implied()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-01
Dan Carp
e
nter
m
a
th: s
e
t the "undefi
n
ed" flag on error in h
a
ndle_mod()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-01
Dan Carpenter
or_vs
_
and: handle condi
t
ions inside p
a
renthesi
s
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-02-01
Emil T
a
ntilov
smatch: fix build
e
rror
commit
|
commitdiff
|
tree
2013-02-01
Da
n
Carpenter
type: intr
o
duce is_v
o
i
d
_p
o
inter() and is_char_pointer()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-31
Dan Carp
e
nter
ab
s
olu
t
e
: delet
e
smat
c
h
_
a
b
sol
u
te
.
c
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-31
D
an Carpenter
*n
e
w* ch
e
ck_s
t
r
i
ng_len
.
c: look for sprintf
(
) over
f
lows
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-28
Dan C
a
rpent
e
r
extra,
modification_hooks, db: mo
v
e get_
v
ariable_from_key
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-28
Dan Carpenter
expressions
:
use more accurate positi
o
n
s
for
f
ak
e
dereferenc
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-28
Dan
C
arpenter
modifi
c
ation_hooks: use modifica
t
ion inf
o
from the
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-28
Dan Carpent
e
r
e
x
t
r
a, equiv: make c
a
ll_extra_mo
d
_
hooks() global
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-28
Dan Ca
r
pente
r
modification_hooks: spli
t
out c
a
ll_mod
i
fication_hooks_nam
e
_sym(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-28
Dan Carpenter
type: h
a
n
dle strings better
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-28
Dan Carpen
t
er
equiv: call_ext
r
a
_
mod_hooks() inside set_equiv()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-28
D
a
n Carpent
e
r
b
u
f_size: don't
c
all get_expression_val
u
e()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-28
Dan
Carpen
t
er
sma
t
ch: cr
e
ate a loca
l
_debug(
)
m
a
cr
o
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-24
D
an Carpenter
smatch
.
h
,
d
b
: add num
b
ers to the info_type enum
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-24
Dan Carpenter
deref: spellin
g
: derefencin
g
=
>
d
er
e
ferencing
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-23
Dan Carp
e
nter
m
at
h
: calcul
a
t
i
n
g the s
i
zeof() used to m
o
d
ify
the
e
xpressi
o
n
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-23
Dan Ca
r
pe
n
te
r
math: u
s
e
smatch_comparison
.
c for handli
n
g
s
u
btract
i
on
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-23
Dan
C
a
rpen
t
er
extra, mod
i
fication
_
hoo
k
s:
set "*p" to unknown if we
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-23
D
a
n Carpenter
smatch_expres
s
i
o
ns: introduce der
e
f_expression()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-23
Da
n
Carpenter
sma
t
ch_expression
s
: rename deref_e
x
pression(
)
to member_expr
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-22
Dan Car
p
e
nte
r
all: rename expr_to_str_
c
om
p
l
e
x() to e
x
p
r
_to_str()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-22
Dan Carpenter
smatch: r
e
name ex
p
r_t
o
_
s
tr()
t
o expr_t
o
_var()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-22
Dan C
a
rpenter
missing br
e
ak: only p
r
int one
message per sw
i
tch statement
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-18
D
an Carpent
e
r
e
xt
r
a: g
e
t rid of
d
ata_type enum
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-18
D
a
n Carpent
e
r
debug: add __smatch_compare()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-17
Dan Carpenter
math: improve get_impl
i
ed_rl() if only th
e
max is known
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-17
Dan Carpenter
sval:
intr
o
duce sva
l
_min/max()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-17
D
an Carpenter
s
match_comparison: store how two variables compar
e
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-15
Dan Carpenter
sl
i
s
t
: fix
alignment
i
n
allo
c
_sname()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-15
D
an Carpenter
v
a
l
id
a
tion: updat
e
a
couple sc
r
ipts wit
h
missi
n
g
b
re
a
k
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-15
Dan Carpenter
Ma
k
efile: fix build error
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-15
Da
n
Car
p
enter
e
q
uiv: ge
t
rid
of the ->op
member
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-15
Dan Carpenter
equiv: u
p
d
ate some co
m
ment
s
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-14
D
an
C
a
rpenter
con
s
traints: eq
u
i
v
: rename smatch_
c
ons
t
r
aints
.
c
t
o
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-14
Dan Ca
r
pent
e
r
ranges: re
n
a
me
show_ranges() to sho
w
_rl()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpenter
smatch: introdu
c
e
expr_to_st
r
_
c
omplex(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Ca
r
penter
s
m
a
t
ch:
introduce expr
_
to_s
t
r()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
D
a
n Carpenter
smatch:
r
ename get_variable_from_expr(
)
t
o
ex
p
r_to_str_s
y
m
()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpente
r
smatch
:
rename get
_
variable_from_expr_complex() to
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
D
a
n Carpenter
extra: shuffle smatch_extra
.
h around some m
o
re
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpenter
estate: rename filter_ra
n
ge() to es
t
ate_filter
_
r
ange()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpenter
e
s
t
a
te: rename
e
state_rang
e
s
() to estate_rl
(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan C
a
r
p
enter
estate: re
n
a
m
e i
s
_whole_range()
to est
a
te_is_whol
e
()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan C
a
rp
e
n
t
er
estate: rename e
x
tra
_
undefined()
to allo
c
_
estate_whole()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpenter
estate: rename alloc_es
t
a
te_range_list() to alloc_estate_
r
l()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpenter
esta
t
e: rename allo
c
_estate()
t
o alloc_estate
_
sval()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan
C
arpenter
estate: shuffle stuff around
i
n the header f
i
le
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpen
t
e
r
ranges: rename free_
r
ange_list() t
o
free_
r
l(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Da
n
C
ar
p
enter
r
anges: rename ge
t
_imp
l
ied_range
_
l
ist()
to get_im
p
lied_rl()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan
C
arpen
t
er
range
s
: rename push_range_list() and friends to push_rl()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan
Carpenter
r
ang
e
s: rename range_lists_equiv() to rl_
e
qu
i
v
()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpent
e
r
ranges: rename
p
o
s
s
i
b
ly_true_r
a
nge_l
i
sts() to possibly_true_rl()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpen
t
er
ranges: shuffle smat
c
h
_extra
.
h
around some more
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpenter
ranges:
r
e
name true_comparison_range_lr() to
true_comparison
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Da
n
Carpenter
ranges
:
r
e
name
p
arse_value_r
a
nges_type() to str_to_rl
(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpenter
ranges: r
e
n
ame allo
c
_
range_list(
)
and friends
t
o
alloc_rl()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpenter
ranges: shuffle stuff around in t
h
e
h
eader fi
l
e and
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpen
t
er
ranges
:
ren
a
me range_list_un
i
on(
)
to rl
_
union()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpenter
m
i
ss
i
ng_break: fix
a segfault
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Da
n
Carpe
n
ter
size
o
f: si
z
eof(ptr * n
r
_
p
tr
s
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpenter
sizeof:
c
h
e
c
k
f
o
r siz
e
of
(
size
o
f
())
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Carpen
t
er
siz
e
of
:
finish
renaming process
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
D
a
n C
a
rpente
r
sizeof: mv che
c
k_
s
izeo
f
_p
o
i
nter
.
c ch
e
ck_sizeof
.
c
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Car
p
e
n
ter
token
_
st
o
r
e
:
sp
l
it out first_token_from_li
n
e
()
int
o
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-11
Dan Car
p
en
t
e
r
*new* check_
m
issing_br
e
ak
.
c
: che
c
k for
fall through
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-10
Da
n
Carpenter
t
ype: g
e
t
_
member
_
type_from_k
e
y() should take an
e
xpression
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-09
D
a
n
C
arp
e
nter
pa
r
am_limit: don't pri
n
t empty states
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-08
Dan
C
a
r
penter
par
s
e: add
"__restrict__" ke
y
word
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-08
Dan Carpen
t
er
ranges:
s
mall
s
p
e
ed up
in
range_li
s
ts_
e
quiv()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-08
Dan
C
arpe
n
ter
db: make
type_sch
e
ma
a
bit smaller
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-08
D
a
n
C
arpent
e
r
gen_paholes
.
s
h: Don't do anything if the necessary
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-08
Dan Carpenter
extra:
d
on't
over write cross funct
i
on
values from
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-08
Dan Carp
e
nt
e
r
d
b: extra:
param_limit/filte
r
/s
e
t: red
o
value tracing
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-08
Dan Carpenter
extra: create a
callback
f
or when
s
match_ex
t
ra changes
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-08
Dan Carpenter
ex
t
ra: create
set_extr
a
_
nom
o
d()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-07
Dan Carpente
r
d
b: fix
u
p
p
rinting return in
f
o
for difficult to split
.
.
.
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2013-01-07
D
a
n Carpenter
math: han
d
le
O
Rs b
e
tter in handle_logic
a
l()
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
2012-12-19
D
a
n Carpenter
extr
a
:
c
all set_ext
r
a_
m
o
d() from set_
e
xtr
_
expr_mod
(
)
Signed-off-by: Dan Carpenter <
dan.carpenter@oracle.com
>
commit
|
commitdiff
|
tree
next