mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-22 16:03:25 +00:00
svg_loader: custom strndup moved into utils
The custom _strndup was used only in one file as an internal function and wasn't accessible in other parts of the code. Now function is available as svgUtilStrndup.
This commit is contained in:
parent
a1f0b06f41
commit
de41853bcf
4 changed files with 20 additions and 19 deletions
|
@ -393,14 +393,7 @@ static char* _idFromUrl(const char* url)
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (url[i] > ' ' && url[i] != ')' && url[i] != '\'') ++i;
|
while (url[i] > ' ' && url[i] != ')' && url[i] != '\'') ++i;
|
||||||
|
|
||||||
//custom strndup() for portability
|
return svgUtilStrndup(url, i);
|
||||||
int len = strlen(url);
|
|
||||||
if (i < len) len = i;
|
|
||||||
|
|
||||||
auto ret = (char*) malloc(len + 1);
|
|
||||||
if (!ret) return 0;
|
|
||||||
ret[len] = '\0';
|
|
||||||
return (char*) memcpy(ret, url, len);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -275,3 +275,16 @@ string svgUtilBase64Decode(const char *src)
|
||||||
}
|
}
|
||||||
return decoded;
|
return decoded;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
char* svgUtilStrndup(const char* str, size_t n)
|
||||||
|
{
|
||||||
|
int len = strlen(str);
|
||||||
|
if (len < n) n = len;
|
||||||
|
|
||||||
|
auto ret = (char*)malloc(n + 1);
|
||||||
|
if (!ret) return nullptr;
|
||||||
|
ret[n] = '\0';
|
||||||
|
|
||||||
|
return (char*)memcpy(ret, str, n);
|
||||||
|
}
|
|
@ -30,4 +30,6 @@ float svgUtilStrtof(const char *nPtr, char **endPtr);
|
||||||
string svgUtilURLDecode(const char *src);
|
string svgUtilURLDecode(const char *src);
|
||||||
string svgUtilBase64Decode(const char *src);
|
string svgUtilBase64Decode(const char *src);
|
||||||
|
|
||||||
|
char* svgUtilStrndup(const char* str, size_t n);
|
||||||
|
|
||||||
#endif //_TVG_SVG_UTIL_H_
|
#endif //_TVG_SVG_UTIL_H_
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "tvgXmlParser.h"
|
#include "tvgXmlParser.h"
|
||||||
|
#include "tvgSvgUtil.h"
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/* Internal Class Implementation */
|
/* Internal Class Implementation */
|
||||||
|
@ -238,14 +239,6 @@ static SimpleXMLType _getXMLType(const char* itr, const char* itrEnd, size_t &to
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static char* _strndup(const char* src, unsigned len)
|
|
||||||
{
|
|
||||||
auto ret = (char*)malloc(len + 1);
|
|
||||||
if (!ret) return nullptr;
|
|
||||||
ret[len] = '\0';
|
|
||||||
return (char*)memcpy(ret, src, len);
|
|
||||||
}
|
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
/* External Class Implementation */
|
/* External Class Implementation */
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
@ -564,10 +557,10 @@ const char* simpleXmlParseCSSAttribute(const char* buf, unsigned bufLength, char
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p == itr) *tag = strdup("all");
|
if (p == itr) *tag = strdup("all");
|
||||||
else *tag = _strndup(itr, p - itr);
|
else *tag = svgUtilStrndup(itr, p - itr);
|
||||||
|
|
||||||
if (p == itrEnd) *name = nullptr;
|
if (p == itrEnd) *name = nullptr;
|
||||||
else *name = _strndup(p + 1, itrEnd - p - 1);
|
else *name = svgUtilStrndup(p + 1, itrEnd - p - 1);
|
||||||
|
|
||||||
return (nextElement ? nextElement + 1 : nullptr);
|
return (nextElement ? nextElement + 1 : nullptr);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue