Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
bce56a6c
Commit
bce56a6c
authored
May 10, 2007
by
Guido van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix some miscellaneous places that incorrectly insisted on str8.
parent
3b116a31
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
34 additions
and
27 deletions
+34
-27
Modules/_csv.c
Modules/_csv.c
+12
-12
Modules/datetimemodule.c
Modules/datetimemodule.c
+13
-9
Modules/posixmodule.c
Modules/posixmodule.c
+9
-6
No files found.
Modules/_csv.c
View file @
bce56a6c
...
...
@@ -235,19 +235,19 @@ _set_char(const char *name, char *target, PyObject *src, char dflt)
if
(
src
==
NULL
)
*
target
=
dflt
;
else
{
if
(
src
==
Py_None
||
PyString_Size
(
src
)
==
0
)
*
target
=
'\0'
;
else
if
(
!
PyString_Check
(
src
)
||
PyString_Size
(
src
)
!=
1
)
{
PyErr_Format
(
PyExc_TypeError
,
"
\"
%s
\"
must be an 1-character string"
,
name
);
return
-
1
;
}
else
{
char
*
s
=
PyString_AsString
(
src
);
if
(
s
==
NULL
)
*
target
=
'\0'
;
if
(
src
!=
Py_None
)
{
const
char
*
buf
;
Py_ssize_t
len
;
if
(
PyObject_AsCharBuffer
(
src
,
&
buf
,
&
len
)
<
0
||
len
>
1
)
{
PyErr_Format
(
PyExc_TypeError
,
"
\"
%s
\"
must be an 1-character string"
,
name
);
return
-
1
;
*
target
=
s
[
0
];
}
if
(
len
>
0
)
*
target
=
buf
[
0
];
}
}
return
0
;
...
...
Modules/datetimemodule.c
View file @
bce56a6c
...
...
@@ -1144,7 +1144,8 @@ wrap_strftime(PyObject *object, PyObject *format, PyObject *timetuple,
PyObject
*
zreplacement
=
NULL
;
/* py string, replacement for %z */
PyObject
*
Zreplacement
=
NULL
;
/* py string, replacement for %Z */
char
*
pin
;
/* pointer to next char in input format */
const
char
*
pin
;
/* pointer to next char in input format */
Py_ssize_t
flen
;
/* length of input format */
char
ch
;
/* next char in input format */
PyObject
*
newfmt
=
NULL
;
/* py string, the output format */
...
...
@@ -1153,11 +1154,15 @@ wrap_strftime(PyObject *object, PyObject *format, PyObject *timetuple,
exclusive of trailing \0 */
int
usednew
;
/* number bytes used so far in output format buffer */
c
har
*
ptoappend
;
/* pointer to string to append to output buffer */
c
onst
char
*
ptoappend
;
/* pointer to string to append to output buffer */
int
ntoappend
;
/* # of bytes to append to output buffer */
assert
(
object
&&
format
&&
timetuple
);
assert
(
PyString_Check
(
format
));
assert
(
PyString_Check
(
format
)
||
PyUnicode_Check
(
format
));
/* Convert the input format to a C string and size */
if
(
PyObject_AsCharBuffer
(
format
,
&
pin
,
&
flen
)
<
0
)
return
NULL
;
/* Give up if the year is before 1900.
* Python strftime() plays games with the year, and different
...
...
@@ -1188,13 +1193,12 @@ wrap_strftime(PyObject *object, PyObject *format, PyObject *timetuple,
* a new format. Since computing the replacements for those codes
* is expensive, don't unless they're actually used.
*/
totalnew
=
PyString_Size
(
format
)
+
1
;
/* realistic if no %z/%Z */
totalnew
=
flen
+
1
;
/* realistic if no %z/%Z */
newfmt
=
PyString_FromStringAndSize
(
NULL
,
totalnew
);
if
(
newfmt
==
NULL
)
goto
Done
;
pnew
=
PyString_AsString
(
newfmt
);
usednew
=
0
;
pin
=
PyString_AsString
(
format
);
while
((
ch
=
*
pin
++
)
!=
'\0'
)
{
if
(
ch
!=
'%'
)
{
ptoappend
=
pin
-
1
;
...
...
@@ -2441,8 +2445,8 @@ date_strftime(PyDateTime_Date *self, PyObject *args, PyObject *kw)
PyObject
*
tuple
;
static
char
*
keywords
[]
=
{
"format"
,
NULL
};
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kw
,
"
O!
:strftime"
,
keywords
,
&
PyString_Type
,
&
format
))
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kw
,
"
S
:strftime"
,
keywords
,
&
format
))
return
NULL
;
tuple
=
PyObject_CallMethod
((
PyObject
*
)
self
,
"timetuple"
,
"()"
);
...
...
@@ -3174,8 +3178,8 @@ time_strftime(PyDateTime_Time *self, PyObject *args, PyObject *kw)
PyObject
*
tuple
;
static
char
*
keywords
[]
=
{
"format"
,
NULL
};
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kw
,
"
O!
:strftime"
,
keywords
,
&
PyString_Type
,
&
format
))
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kw
,
"
S
:strftime"
,
keywords
,
&
format
))
return
NULL
;
/* Python's strftime does insane things with the year part of the
...
...
Modules/posixmodule.c
View file @
bce56a6c
...
...
@@ -6966,13 +6966,19 @@ conv_confname(PyObject *arg, int *valuep, struct constdef *table,
*
valuep
=
PyInt_AS_LONG
(
arg
);
return
1
;
}
if
(
PyString_Check
(
arg
))
{
else
{
/* look up the value in the table using a binary search */
size_t
lo
=
0
;
size_t
mid
;
size_t
hi
=
tablesize
;
int
cmp
;
char
*
confname
=
PyString_AS_STRING
(
arg
);
const
char
*
confname
;
Py_ssize_t
namelen
;
if
(
PyObject_AsCharBuffer
(
arg
,
&
confname
,
&
namelen
)
<
0
)
{
PyErr_SetString
(
PyExc_TypeError
,
"configuration names must be strings or integers"
);
return
0
;
}
while
(
lo
<
hi
)
{
mid
=
(
lo
+
hi
)
/
2
;
cmp
=
strcmp
(
confname
,
table
[
mid
].
name
);
...
...
@@ -6986,11 +6992,8 @@ conv_confname(PyObject *arg, int *valuep, struct constdef *table,
}
}
PyErr_SetString
(
PyExc_ValueError
,
"unrecognized configuration name"
);
return
0
;
}
else
PyErr_SetString
(
PyExc_TypeError
,
"configuration names must be strings or integers"
);
return
0
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment