lua

A copy of the Lua development repository
Log | Files | Refs | README

commit 2d053126e642bc1770ccc426ef0a95eb13f2085c
parent 3203460c9e44f44e4586ecee6b1cb528db9150c7
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date:   Mon,  6 Feb 1995 17:37:32 -0200

new function for copy strings (strdup is not ANSI)

Diffstat:
Mstrlib.c | 21++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/strlib.c b/strlib.c @@ -3,16 +3,27 @@ ** String library to LUA */ -char *rcs_strlib="$Id: strlib.c,v 1.10 1995/02/02 18:54:58 roberto Exp $"; +char *rcs_strlib="$Id: strlib.c,v 1.11 1995/02/02 20:05:37 roberto Exp roberto $"; #include <string.h> -#include <strings.h> #include <stdlib.h> #include <ctype.h> #include "lua.h" #include "lualib.h" + +static char *newstring (lua_Object o) +{ + char *s = lua_getstring(o); + char *ns = (char *)malloc(strlen(s)+1); + if (ns == 0) + lua_error("not enough memory for new string"); + strcpy(ns, s); + return ns; +} + + /* ** Return the position of the first caracter of a substring into a string ** LUA interface: @@ -86,7 +97,7 @@ static void str_sub (void) lua_error ("incorrect arguments to function `strsub'"); if (o3 != LUA_NOOBJECT && !lua_isnumber(o3)) lua_error ("incorrect third argument to function `strsub'"); - s = lua_copystring(o1); + s = newstring(o1); start = lua_getnumber (o2); end = o3 == LUA_NOOBJECT ? strlen(s) : lua_getnumber (o3); if (end < start || start < 1 || end > strlen(s)) @@ -110,7 +121,7 @@ static void str_lower (void) lua_Object o = lua_getparam (1); if (!lua_isstring(o)) lua_error ("incorrect arguments to function `strlower'"); - c = s = lua_copystring(o); + c = s = newstring(o); while (*c != 0) { *c = tolower(*c); @@ -132,7 +143,7 @@ static void str_upper (void) lua_Object o = lua_getparam (1); if (!lua_isstring(o)) lua_error ("incorrect arguments to function `strlower'"); - c = s = lua_copystring(o); + c = s = newstring(o); while (*c != 0) { *c = toupper(*c);