@@ -916,8 +916,9 @@ putHeader (Header ets) = do
916
916
putMarker EVENT_ET_BEGIN
917
917
putType n
918
918
putE $ fromMaybe 0xffff msz
919
- putE (fromIntegral $ T. length d :: EventTypeDescLen )
920
- putE d
919
+ let d' = TE. encodeUtf8 d
920
+ putE (fromIntegral $ B. length d' :: EventTypeDescLen )
921
+ putByteString d'
921
922
-- the event type header allows for extra data, which we don't use:
922
923
putE (0 :: Word32 )
923
924
putMarker EVENT_ET_END
@@ -1136,9 +1137,10 @@ putEventSpec (WakeupThread t c) = do
1136
1137
putCap c
1137
1138
1138
1139
putEventSpec (ThreadLabel t l) = do
1139
- putE (fromIntegral (T. length l) + sz_tid :: Word16 )
1140
+ let l' = TE. encodeUtf8 l
1141
+ putE (fromIntegral (B. length l') + sz_tid :: Word16 )
1140
1142
putE t
1141
- putE l
1143
+ putByteString l'
1142
1144
1143
1145
putEventSpec Shutdown =
1144
1146
return ()
@@ -1245,21 +1247,24 @@ putEventSpec (CapsetRemoveCap cs cp) = do
1245
1247
putCap cp
1246
1248
1247
1249
putEventSpec (RtsIdentifier cs rts) = do
1248
- putE (fromIntegral (T. length rts) + sz_capset :: Word16 )
1250
+ let rts' = TE. encodeUtf8 rts
1251
+ putE (fromIntegral (B. length rts') + sz_capset :: Word16 )
1249
1252
putE cs
1250
- putE rts
1253
+ putByteString rts'
1251
1254
1252
1255
putEventSpec (ProgramArgs cs as) = do
1253
- let sz_args = sum $ map ((+ 1 ) {- for \0 -} . T. length ) as
1256
+ let as' = map TE. encodeUtf8 as
1257
+ let sz_args = sum (map ((+ 1 ) {- for \0 -} . B. length ) as') - 1
1254
1258
putE (fromIntegral sz_args + sz_capset :: Word16 )
1255
1259
putE cs
1256
- mapM_ putE (intersperse " \0" as)
1260
+ mapM_ putByteString (intersperse " \0" as' )
1257
1261
1258
1262
putEventSpec (ProgramEnv cs es) = do
1259
- let sz_env = sum $ map ((+ 1 ) {- for \0 -} . T. length ) es
1263
+ let es' = map TE. encodeUtf8 es
1264
+ let sz_env = sum (map ((+ 1 ) {- for \0 -} . B. length ) es') - 1
1260
1265
putE (fromIntegral sz_env + sz_capset :: Word16 )
1261
1266
putE cs
1262
- mapM_ putE $ intersperse " \0" es
1267
+ mapM_ putByteString $ intersperse " \0" es'
1263
1268
1264
1269
putEventSpec (OsProcessPid cs pid) = do
1265
1270
putE cs
@@ -1275,16 +1280,19 @@ putEventSpec (WallClockTime cs sec nsec) = do
1275
1280
putE nsec
1276
1281
1277
1282
putEventSpec (Message s) = do
1278
- putE (fromIntegral (T. length s) :: Word16 )
1279
- putE s
1283
+ let s' = TE. encodeUtf8 s
1284
+ putE (fromIntegral (B. length s') :: Word16 )
1285
+ putByteString s'
1280
1286
1281
1287
putEventSpec (UserMessage s) = do
1282
- putE (fromIntegral (T. length s) :: Word16 )
1283
- putE s
1288
+ let s' = TE. encodeUtf8 s
1289
+ putE (fromIntegral (B. length s') :: Word16 )
1290
+ putByteString s'
1284
1291
1285
1292
putEventSpec (UserMarker s) = do
1286
- putE (fromIntegral (T. length s) :: Word16 )
1287
- putE s
1293
+ let s' = TE. encodeUtf8 s
1294
+ putE (fromIntegral (B. length s') :: Word16 )
1295
+ putByteString s'
1288
1296
1289
1297
putEventSpec (UnknownEvent {}) = error " putEventSpec UnknownEvent"
1290
1298
@@ -1388,9 +1396,10 @@ putEventSpec MerCapSleeping = return ()
1388
1396
putEventSpec MerCallingMain = return ()
1389
1397
1390
1398
putEventSpec PerfName {.. } = do
1391
- putE (fromIntegral (T. length name) + sz_perf_num :: Word16 )
1399
+ let name' = TE. encodeUtf8 name
1400
+ putE (fromIntegral (B. length name') + sz_perf_num :: Word16 )
1392
1401
putE perfNum
1393
- putE name
1402
+ putByteString name'
1394
1403
1395
1404
putEventSpec PerfCounter {.. } = do
1396
1405
putE perfNum
0 commit comments