3 ms·
a bit of optimization in $src/libsass/copy_c_str.cpp char* copy_c_str(const char* orig) { size_t len = strlen(orig) + 1 ;
by mhogomchungu 13y ago
a bit of optimization in $src/libsass/copy_c_str.cpp
char* copy_c_str(const char* orig)
{
size_t len = strlen(orig) + 1 ;
char* copy = (char*) malloc(sizeof(char) * len );
memcpy(copy, orig, len);
return copy;
}
- akhleung 13y agoThanks, I'll give it a try and benchmark it. Also, pull requests are welcome for this sort of thing!
- mtklein 13y agoor maybe just #define copy_c_str strdup ?
- unwind 13y agoUh, okay. I didn't read the original, sounds somewhat scary. Anyway, please don't cast the return value of malloc() in C (http://stackoverflow.com/a/605858/28169 http://stackoverflow.com/a/605858/28169). Also, of course len should be const and sizeof (char) should be removed. Also testing whether malloc() succeeded before relying on the result being valid is a good idea (but perhaps there's machinery in place to abort on error), as is deciding what to do if the input string is NULL.
- dchest 13y agoAnyway, please don't cast the return value of malloc() in C (http://stackoverflow.com/a/605858/28169 http://stackoverflow.com/a/605858/28169). It's C++.
- deleted 13y ago[deleted]
- beagle3 13y agoit will; he allocates and copies strlen()+1 bytes
- stevekemp 13y agoWouldn't this be even better: return( strdup( orig ) ); ?