summaryrefslogtreecommitdiffstats
path: root/Objects/stringobject.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1991-03-06 13:15:02 (GMT)
committerGuido van Rossum <guido@python.org>1991-03-06 13:15:02 (GMT)
commitb6a6bdc7db54c684646f3cc3c537e8c62293986d (patch)
treecc4dc5645edc52b1359ae8eef2af71f8fd3e34cd /Objects/stringobject.c
parentbf109736d92d5d0df8992466e19c4403179a42d8 (diff)
downloadcpython-b6a6bdc7db54c684646f3cc3c537e8c62293986d.zip
cpython-b6a6bdc7db54c684646f3cc3c537e8c62293986d.tar.gz
cpython-b6a6bdc7db54c684646f3cc3c537e8c62293986d.tar.bz2
Optimized stringitem.
Diffstat (limited to 'Objects/stringobject.c')
-rw-r--r--Objects/stringobject.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index cb04d94..9b11f92 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -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