Optimized stringitem.

This commit is contained in:
Guido van Rossum 1991-03-06 13:15:02 +00:00
parent bf109736d9
commit b6a6bdc7db
1 changed files with 13 additions and 1 deletions

View File

@ -246,11 +246,23 @@ stringitem(a, i)
stringobject *a;
register int i;
{
/* This is optimized since this is a common operation! */
register stringobject *op;
if (i < 0 || i >= a->ob_size) {
err_setstr(IndexError, "string index out of range");
return NULL;
}
return stringslice(a, i, i+1);
op = (stringobject *)
malloc(sizeof(stringobject) + sizeof(char));
if (op == NULL)
return err_nomem();
NEWREF(op);
op->ob_type = &Stringtype;
op->ob_size = 1;
op->ob_sval[0] = a->ob_sval[i];
op->ob_sval[1] = '\0';
return (object *) op;
}
static int