@@ -38,6 +38,10 @@ LibraryManager.library = {
3838 setTempRet0 ( val ) ;
3939 } ,
4040
41+ $zeroMemory : function ( address , size ) {
42+ HEAPU8 . fill ( 0 , address , address + size ) ;
43+ } ,
44+
4145#if SAFE_HEAP
4246 // Trivial wrappers around runtime functions that make these symbols available
4347 // to native code.
@@ -1490,12 +1494,13 @@ LibraryManager.library = {
14901494 // sys/times.h
14911495 // ==========================================================================
14921496
1497+ times__deps : [ '$zeroMemory' ] ,
14931498 times : function ( buffer ) {
14941499 // clock_t times(struct tms *buffer);
14951500 // http://pubs.opengroup.org/onlinepubs/009695399/functions/times.html
14961501 // NOTE: This is fake, since we can't calculate real CPU time usage in JS.
14971502 if ( buffer !== 0 ) {
1498- _memset ( buffer , 0 , { { { C_STRUCTS . tms . __size__ } } } ) ;
1503+ zeroMemory ( buffer , { { { C_STRUCTS . tms . __size__ } } } ) ;
14991504 }
15001505 return 0 ;
15011506 } ,
@@ -2040,23 +2045,22 @@ LibraryManager.library = {
20402045
20412046 return { family : family , addr : addr , port : port } ;
20422047 } ,
2043- $writeSockaddr__deps : [ '$Sockets ', '$inetPton4 ', '$inetPton6 '] ,
2048+ $writeSockaddr__deps : [ '$Sockets ', '$inetPton4 ', '$inetPton6 ', ' $zeroMemory ' ] ,
20442049 $writeSockaddr : function ( sa , family , addr , port , addrlen ) {
20452050 switch ( family ) {
20462051 case { { { cDefine ( 'AF_INET ') } } } :
20472052 addr = inetPton4 ( addr ) ;
2053+ zeroMemory ( sa , { { { C_STRUCTS . sockaddr_in . __size__ } } } ) ;
20482054 if ( addrlen ) {
20492055 { { { makeSetValue ( 'addrlen' , 0 , C_STRUCTS . sockaddr_in . __size__ , 'i32' ) } } } ;
20502056 }
20512057 { { { makeSetValue ( 'sa ', C_STRUCTS . sockaddr_in . sin_family , 'family ', 'i16 ') } } } ;
20522058 { { { makeSetValue ( 'sa ', C_STRUCTS . sockaddr_in . sin_addr . s_addr , 'addr ', 'i32 ') } } } ;
20532059 { { { makeSetValue ( 'sa ', C_STRUCTS . sockaddr_in . sin_port , '_htons ( port ) ', 'i16 ') } } } ;
2054- /* Use makeSetValue instead of memset to avoid adding memset dependency for all users of writeSockaddr. */
2055- { { { assert ( C_STRUCTS . sockaddr_in . __size__ - C_STRUCTS . sockaddr_in . sin_zero == 8 ) , '' } } }
2056- { { { makeSetValue ( 'sa ', C_STRUCTS . sockaddr_in . sin_zero , '0 ', 'i64 ') } } } ;
20572060 break ;
20582061 case { { { cDefine ( 'AF_INET6 ') } } } :
20592062 addr = inetPton6 ( addr ) ;
2063+ zeroMemory ( sa , { { { C_STRUCTS . sockaddr_in6 . __size__ } } } ) ;
20602064 if ( addrlen ) {
20612065 { { { makeSetValue ( 'addrlen' , 0 , C_STRUCTS . sockaddr_in6 . __size__ , 'i32' ) } } } ;
20622066 }
@@ -2066,8 +2070,6 @@ LibraryManager.library = {
20662070 { { { makeSetValue ( 'sa ', C_STRUCTS . sockaddr_in6 . sin6_addr . __in6_union . __s6_addr + 8 , 'addr [ 2 ] ', 'i32 ') } } } ;
20672071 { { { makeSetValue ( 'sa ', C_STRUCTS . sockaddr_in6 . sin6_addr . __in6_union . __s6_addr + 12 , 'addr [ 3 ] ', 'i32 ') } } } ;
20682072 { { { makeSetValue ( 'sa ', C_STRUCTS . sockaddr_in6 . sin6_port , '_htons ( port ) ', 'i16 ') } } } ;
2069- { { { makeSetValue ( 'sa ', C_STRUCTS . sockaddr_in6 . sin6_flowinfo , '0 ', 'i32 ') } } } ;
2070- { { { makeSetValue ( 'sa ', C_STRUCTS . sockaddr_in6 . sin6_scope_id , '0 ', 'i32 ') } } } ;
20712073 break ;
20722074 default :
20732075 return { { { cDefine ( 'EAFNOSUPPORT ') } } } ;
0 commit comments