aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-per.c
diff options
context:
space:
mode:
authorMartin Mathieson <martin.r.mathieson@googlemail.com>2012-12-09 04:23:46 +0000
committerMartin Mathieson <martin.r.mathieson@googlemail.com>2012-12-09 04:23:46 +0000
commite5e25f867064eae126ff6580866893a308d338b6 (patch)
treec206cf3cab1d1bf5265225470980a9630ee5f7af /epan/dissectors/packet-per.c
parent0fbf4b5b1c9bac5b33251c35c9eca9cc848a5402 (diff)
Speed up dissect_per_boolean() by avoiding call to ep_strdup_printf().
Saves 5% on a particular LTE log. svn path=/trunk/; revision=46478
Diffstat (limited to 'epan/dissectors/packet-per.c')
-rw-r--r--epan/dissectors/packet-per.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/epan/dissectors/packet-per.c b/epan/dissectors/packet-per.c
index f248b325b7..e579edf86d 100644
--- a/epan/dissectors/packet-per.c
+++ b/epan/dissectors/packet-per.c
@@ -964,21 +964,22 @@ DEBUG_ENTRY("dissect_per_boolean");
value=0;
}
if(hf_index!=-1){
- char *str;
+ char bits[10];
+ bits[0] = mask&0x80?'0'+value:'.';
+ bits[1] = mask&0x40?'0'+value:'.';
+ bits[2] = mask&0x20?'0'+value:'.';
+ bits[3] = mask&0x10?'0'+value:'.';
+ bits[4] = ' ';
+ bits[5] = mask&0x08?'0'+value:'.';
+ bits[6] = mask&0x04?'0'+value:'.';
+ bits[7] = mask&0x02?'0'+value:'.';
+ bits[8] = mask&0x01?'0'+value:'.';
+ bits[9] = '\0';
+
hfi = proto_registrar_get_nth(hf_index);
- str=ep_strdup_printf("%c%c%c%c %c%c%c%c %s: %s",
- mask&0x80?'0'+value:'.',
- mask&0x40?'0'+value:'.',
- mask&0x20?'0'+value:'.',
- mask&0x10?'0'+value:'.',
- mask&0x08?'0'+value:'.',
- mask&0x04?'0'+value:'.',
- mask&0x02?'0'+value:'.',
- mask&0x01?'0'+value:'.',
- hfi->name,
- value?"True":"False"
- );
- actx->created_item = proto_tree_add_boolean_format(tree, hf_index, tvb, offset>>3, 1, value, "%s", str);
+ actx->created_item = proto_tree_add_boolean_format(tree, hf_index, tvb, offset>>3, 1, value,
+ "%s %s: %s", bits, hfi->name,
+ value?"True":"False");
} else {
actx->created_item = NULL;
}