@@ -368,20 +368,21 @@ bool MCS_name_to_sockaddr(MCStringRef p_name_in, struct sockaddr_in *r_addr, MCH
368368 if (!MCS_init_sockets ())
369369 return false ;
370370
371- MCAutoStringRef t_substring , t_name, t_port;
371+ MCAutoStringRef t_name_in , t_name, t_port;
372372 uindex_t t_or, t_colon;
373373
374374 // support multiple opens to same host:port
375375 if (MCStringFirstIndexOfChar (p_name_in, ' |' , 0 , kMCCompareExact , t_or))
376376 {
377- /* UNCHECKED */ MCStringCopySubstring (p_name_in, MCRangeMake (0 , t_or), &t_substring);
378- MCValueAssign (p_name_in, *t_substring);
377+ /* UNCHECKED */ MCStringCopySubstring (p_name_in, MCRangeMake (0 , t_or), &t_name_in);
379378 }
379+ else
380+ t_name_in = MCValueRetain (p_name_in);
380381
381382 uinteger_t port = 80 ;
382- if (MCStringFirstIndexOfChar (p_name_in , ' :' , 0 , kMCCompareExact , t_colon))
383+ if (MCStringFirstIndexOfChar (*t_name_in , ' :' , 0 , kMCCompareExact , t_colon))
383384 {
384- /* UNCHECKED */ MCStringDivideAtIndex (p_name_in , t_colon, &t_name, &t_port);
385+ /* UNCHECKED */ MCStringDivideAtIndex (*t_name_in , t_colon, &t_name, &t_port);
385386 MCAutoNumberRef t_port_number;
386387 if (!MCNumberParse (*t_port, &t_port_number))
387388 {
@@ -405,7 +406,7 @@ bool MCS_name_to_sockaddr(MCStringRef p_name_in, struct sockaddr_in *r_addr, MCH
405406 port = MCNumberFetchAsInteger (*t_port_number);
406407 }
407408 else
408- t_name = MCValueRetain (p_name_in );
409+ t_name = MCValueRetain (*t_name_in );
409410
410411 bool t_success = true ;
411412
0 commit comments