33 */
44#include <assert.h>
55#include <inttypes.h>
6+ #include <limits.h>
67#include <stdio.h>
78#include <string.h>
89
@@ -59,7 +60,7 @@ int asdf_event_iterate(asdf_parser_t *parser, asdf_event_t *event) {
5960
6061const char * asdf_event_type_name (asdf_event_type_t event_type ) {
6162 if (event_type >= 0 && event_type < ASDF_EVENT_TYPE_COUNT )
62- return ASDF_EVENT_TYPE_NAMES [event_type ];
63+ return asdf_event_type_names [event_type ];
6364
6465 return "ASDF_UNKNOWN_EVENT" ;
6566}
@@ -107,28 +108,51 @@ void asdf_event_print(const asdf_event_t *event, FILE *file, bool verbose) {
107108 }
108109
109110 case ASDF_TREE_START_EVENT :
110- fprintf (file , " Tree start position: %zu (0x%zx)\n" , event -> payload .tree -> start ,
111- event -> payload .tree -> start );
111+ fprintf (
112+ file ,
113+ " Tree start position: %zu (0x%zx)\n" ,
114+ event -> payload .tree -> start ,
115+ event -> payload .tree -> start );
112116 break ;
113117
114118 case ASDF_TREE_END_EVENT :
115- fprintf (file , " Tree end position: %zu (0x%zx)\n" , event -> payload .tree -> end ,
116- event -> payload .tree -> end );
119+ fprintf (
120+ file ,
121+ " Tree end position: %zu (0x%zx)\n" ,
122+ event -> payload .tree -> end ,
123+ event -> payload .tree -> end );
124+ if (event -> payload .tree -> buf ) {
125+ size_t tree_size = event -> payload .tree -> end - event -> payload .tree -> start - 1 ;
126+ fprintf (
127+ file ,
128+ "%.*s\n" ,
129+ (int )(tree_size > INT_MAX ? INT_MAX : tree_size ),
130+ event -> payload .tree -> buf );
131+ }
117132 break ;
118133
119134 case ASDF_BLOCK_EVENT : {
120135 const asdf_block_info_t * block = event -> payload .block ;
121136 const asdf_block_header_t header = block -> header ;
122- fprintf (file , " Header position: %" PRId64 " (0x%" PRIx64 ")\n" ,
123- (int64_t )block -> header_pos , (int64_t )block -> header_pos );
124- fprintf (file , " Data position: %" PRId64 " (0x%" PRIx64 ")\n" ,
125- (int64_t )block -> data_pos , (int64_t )block -> data_pos );
126- fprintf (file , " Allocated size: %" PRIu64 " (0x%" PRIx64 ")\n" ,
127- header .allocated_size , header .allocated_size );
128- fprintf (file , " Used size: %" PRIu64 " (0x%" PRIx64 ")\n" , header .used_size ,
129- header .used_size );
130- fprintf (file , " Data size: %" PRIu64 " (0x%" PRIx64 ")\n" , header .data_size ,
131- header .data_size );
137+ fprintf (
138+ file ,
139+ " Header position: %" PRId64 " (0x%" PRIx64 ")\n" ,
140+ (int64_t )block -> header_pos ,
141+ (int64_t )block -> header_pos );
142+ fprintf (
143+ file ,
144+ " Data position: %" PRId64 " (0x%" PRIx64 ")\n" ,
145+ (int64_t )block -> data_pos ,
146+ (int64_t )block -> data_pos );
147+ fprintf (
148+ file ,
149+ " Allocated size: %" PRIu64 " (0x%" PRIx64 ")\n" ,
150+ header .allocated_size ,
151+ header .allocated_size );
152+ fprintf (
153+ file , " Used size: %" PRIu64 " (0x%" PRIx64 ")\n" , header .used_size , header .used_size );
154+ fprintf (
155+ file , " Data size: %" PRIu64 " (0x%" PRIx64 ")\n" , header .data_size , header .data_size );
132156
133157 if (header .compression [0 ] != '\0' )
134158 fprintf (file , " Compression: %.4s\n" , header .compression );
@@ -152,9 +176,6 @@ void asdf_event_destroy(asdf_parser_t *parser, asdf_event_t *event) {
152176 switch (event -> type ) {
153177 case ASDF_TREE_START_EVENT :
154178 case ASDF_TREE_END_EVENT :
155- if (event -> payload .tree )
156- free (event -> payload .tree -> buf );
157-
158179 free (event -> payload .tree );
159180 break ;
160181 case ASDF_YAML_EVENT :
0 commit comments