Mercurial > cpython-lru_cache-weakref
annotate Python/modsupport.c @ 42084:229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/p3yk
................
r55837 | guido.van.rossum | 2007-06-08 16:04:42 -0700 (Fri, 08 Jun 2007) | 2 lines
PEP 3119 -- the abc module.
................
r55838 | guido.van.rossum | 2007-06-08 17:38:55 -0700 (Fri, 08 Jun 2007) | 2 lines
Implement part of PEP 3119 -- One Trick Ponies.
................
r55847 | guido.van.rossum | 2007-06-09 08:28:06 -0700 (Sat, 09 Jun 2007) | 2 lines
Different way to do one trick ponies, allowing registration (per PEP strawman).
................
r55849 | guido.van.rossum | 2007-06-09 18:06:38 -0700 (Sat, 09 Jun 2007) | 3 lines
Make sure that the magic looking for __hash__ (etc.) doesn't apply to
real subclasses of Hashable.
................
r55852 | guido.van.rossum | 2007-06-10 08:29:51 -0700 (Sun, 10 Jun 2007) | 2 lines
Add some more examples, e.g. generators and dict views.
................
r55853 | guido.van.rossum | 2007-06-10 08:31:59 -0700 (Sun, 10 Jun 2007) | 2 lines
keys() and items() *are* containers -- just values() isn't.
................
r55864 | georg.brandl | 2007-06-10 15:29:40 -0700 (Sun, 10 Jun 2007) | 2 lines
PEP 3127: new octal literals, binary literals.
................
r55865 | georg.brandl | 2007-06-10 15:31:37 -0700 (Sun, 10 Jun 2007) | 2 lines
Some octal literal fixes in Tools.
................
r55866 | georg.brandl | 2007-06-10 15:37:43 -0700 (Sun, 10 Jun 2007) | 2 lines
Tokenizer changes for PEP 3127.
................
r55867 | georg.brandl | 2007-06-10 15:37:55 -0700 (Sun, 10 Jun 2007) | 2 lines
Some docs for PEP 3127.
................
r55868 | georg.brandl | 2007-06-10 15:44:39 -0700 (Sun, 10 Jun 2007) | 2 lines
Missed a place in intobject.c. Is that used anymore anyway?
................
r55871 | neal.norwitz | 2007-06-10 18:31:49 -0700 (Sun, 10 Jun 2007) | 182 lines
Merged revisions 55729-55868 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r55731 | neal.norwitz | 2007-06-01 00:29:12 -0700 (Fri, 01 Jun 2007) | 7 lines
SF 1668596/1720897: distutils now copies data files
even if package_dir is empty.
This needs to be backported. I'm too tired tonight. It would be great
if someone backports this if the buildbots are ok with it. Otherwise,
I will try to get to it tomorrow.
........
r55732 | georg.brandl | 2007-06-01 04:33:33 -0700 (Fri, 01 Jun 2007) | 2 lines
Bug #1722484: remove docstrings again when running with -OO.
........
r55735 | georg.brandl | 2007-06-01 12:20:27 -0700 (Fri, 01 Jun 2007) | 2 lines
Fix wrong issue number.
........
r55739 | brett.cannon | 2007-06-01 20:02:29 -0700 (Fri, 01 Jun 2007) | 3 lines
Have configure raise an error when building on AtheOS. Code specific to AtheOS
will be removed in Python 2.7.
........
r55746 | neal.norwitz | 2007-06-02 11:33:53 -0700 (Sat, 02 Jun 2007) | 1 line
Update expected birthday of 2.6
........
r55751 | neal.norwitz | 2007-06-03 13:32:50 -0700 (Sun, 03 Jun 2007) | 10 lines
Backout the original 'fix' to 1721309 which had no effect.
Different versions of Berkeley DB handle this differently.
The comments and bug report should have the details. Memory is allocated
in 4.4 (and presumably earlier), but not in 4.5. Thus
4.5 has the free error, but not earlier versions.
Mostly update comments, plus make the free conditional.
This fix was already applied to the 2.5 branch.
........
r55752 | brett.cannon | 2007-06-03 16:13:41 -0700 (Sun, 03 Jun 2007) | 6 lines
Make _strptime.TimeRE().pattern() use ``\s+`` for matching whitespace instead
of ``\s*``. This prevents patterns from "stealing" bits from other patterns in
order to make a match work.
Closes bug #1730389. Will be backported.
........
r55766 | hyeshik.chang | 2007-06-05 11:16:52 -0700 (Tue, 05 Jun 2007) | 4 lines
Fix build on FreeBSD. Bluetooth HCI API in FreeBSD is quite different
from Linux's. Just fix the build for now but the code doesn't
support the complete capability of HCI on FreeBSD yet.
........
r55770 | hyeshik.chang | 2007-06-05 11:58:51 -0700 (Tue, 05 Jun 2007) | 4 lines
Bug #1728403: Fix a bug that CJKCodecs StreamReader hangs when it
reads a file that ends with incomplete sequence and sizehint argument
for .read() is specified.
........
r55775 | hyeshik.chang | 2007-06-05 12:28:15 -0700 (Tue, 05 Jun 2007) | 2 lines
Fix for Windows: close a temporary file before trying to delete it.
........
r55783 | guido.van.rossum | 2007-06-05 14:24:47 -0700 (Tue, 05 Jun 2007) | 2 lines
Patch by Tim Delany (missing DECREF). SF #1731330.
........
r55785 | collin.winter | 2007-06-05 17:17:35 -0700 (Tue, 05 Jun 2007) | 3 lines
Patch #1731049: make threading.py use a proper "raise" when checking internal state, rather than assert statements (which get stripped out by -O).
........
r55786 | facundo.batista | 2007-06-06 08:13:37 -0700 (Wed, 06 Jun 2007) | 4 lines
FTP.ntransfercmd method now uses create_connection when passive,
using the timeout received in connection time.
........
r55792 | facundo.batista | 2007-06-06 10:15:23 -0700 (Wed, 06 Jun 2007) | 7 lines
Added an optional timeout parameter to function urllib2.urlopen,
with tests in test_urllib2net.py (must have network resource
enabled to execute them). Also modified test_urllib2.py because
testing mock classes must take it into acount. Docs are also
updated.
........
r55793 | thomas.heller | 2007-06-06 13:19:19 -0700 (Wed, 06 Jun 2007) | 1 line
Build _ctypes and _ctypes_test in the ReleaseAMD64 configuration.
........
r55802 | georg.brandl | 2007-06-07 06:23:24 -0700 (Thu, 07 Jun 2007) | 3 lines
Disallow function calls like foo(None=1).
Backport from py3k rev. 55708 by Guido.
........
r55804 | georg.brandl | 2007-06-07 06:30:24 -0700 (Thu, 07 Jun 2007) | 2 lines
Make reindent.py executable.
........
r55805 | georg.brandl | 2007-06-07 06:34:10 -0700 (Thu, 07 Jun 2007) | 2 lines
Patch #1667860: Fix UnboundLocalError in urllib2.
........
r55821 | kristjan.jonsson | 2007-06-07 16:53:49 -0700 (Thu, 07 Jun 2007) | 1 line
Fixing changes to getbuildinfo.c that broke linux builds
........
r55828 | thomas.heller | 2007-06-08 09:10:27 -0700 (Fri, 08 Jun 2007) | 1 line
Make this test work with older Python releases where struct has no 't' format character.
........
r55829 | martin.v.loewis | 2007-06-08 10:29:20 -0700 (Fri, 08 Jun 2007) | 3 lines
Bug #1733488: Fix compilation of bufferobject.c on AIX.
Will backport to 2.5.
........
r55831 | thomas.heller | 2007-06-08 11:20:09 -0700 (Fri, 08 Jun 2007) | 2 lines
[ 1715718 ] x64 clean compile patch for _ctypes, by Kristj?n Valur
with small modifications.
........
r55832 | thomas.heller | 2007-06-08 12:01:06 -0700 (Fri, 08 Jun 2007) | 1 line
Fix gcc warnings intruduced by passing Py_ssize_t to PyErr_Format calls.
........
r55833 | thomas.heller | 2007-06-08 12:08:31 -0700 (Fri, 08 Jun 2007) | 2 lines
Fix wrong documentation, and correct the punktuation.
Closes [1700455].
........
r55834 | thomas.heller | 2007-06-08 12:14:23 -0700 (Fri, 08 Jun 2007) | 1 line
Fix warnings by using proper function prototype.
........
r55839 | neal.norwitz | 2007-06-08 20:36:34 -0700 (Fri, 08 Jun 2007) | 7 lines
Prevent expandtabs() on string and unicode objects from causing a segfault when
a large width is passed on 32-bit platforms. Found by Google.
It would be good for people to review this especially carefully and verify
I don't have an off by one error and there is no other way to cause overflow.
........
r55841 | neal.norwitz | 2007-06-08 21:48:22 -0700 (Fri, 08 Jun 2007) | 1 line
Use macro version of GET_SIZE to avoid Coverity warning (#150) about a possible error.
........
r55842 | martin.v.loewis | 2007-06-09 00:42:52 -0700 (Sat, 09 Jun 2007) | 3 lines
Patch #1733960: Allow T_LONGLONG to accept ints.
Will backport to 2.5.
........
r55843 | martin.v.loewis | 2007-06-09 00:58:05 -0700 (Sat, 09 Jun 2007) | 2 lines
Fix Windows build.
........
r55845 | martin.v.loewis | 2007-06-09 03:10:26 -0700 (Sat, 09 Jun 2007) | 2 lines
Provide LLONG_MAX for S390.
........
r55854 | thomas.heller | 2007-06-10 08:59:17 -0700 (Sun, 10 Jun 2007) | 4 lines
First version of build scripts for Windows/AMD64 (no external
components are built yet, and 'kill_python' is disabled).
........
r55855 | thomas.heller | 2007-06-10 10:55:51 -0700 (Sun, 10 Jun 2007) | 3 lines
For now, disable the _bsddb, _sqlite3, _ssl, _testcapi, _tkinter
modules in the ReleaseAMD64 configuration because they do not compile.
........
r55856 | thomas.heller | 2007-06-10 11:27:54 -0700 (Sun, 10 Jun 2007) | 1 line
Need to set the environment variables, otherwise devenv.com is not found.
........
r55860 | thomas.heller | 2007-06-10 14:01:17 -0700 (Sun, 10 Jun 2007) | 1 line
Revert commit 55855.
........
................
r55880 | neal.norwitz | 2007-06-10 22:07:36 -0700 (Sun, 10 Jun 2007) | 5 lines
Fix the refleak counter on test_collections. The ABC metaclass creates
a registry which must be cleared on each run. Otherwise, there *seem*
to be refleaks when there really aren't any. (The class is held within
the registry even though it's no longer needed.)
................
r55884 | neal.norwitz | 2007-06-10 22:46:33 -0700 (Sun, 10 Jun 2007) | 1 line
These tests have been removed, so they are no longer needed here
................
r55886 | georg.brandl | 2007-06-11 00:26:37 -0700 (Mon, 11 Jun 2007) | 3 lines
Optimize access to True and False in the compiler (if True)
and the peepholer (LOAD_NAME True).
................
r55905 | georg.brandl | 2007-06-11 10:02:26 -0700 (Mon, 11 Jun 2007) | 5 lines
Remove __oct__ and __hex__ and use __index__ for converting
non-ints before formatting in a base.
Add a bin() builtin.
................
r55906 | georg.brandl | 2007-06-11 10:04:44 -0700 (Mon, 11 Jun 2007) | 2 lines
int(x, 0) does not "guess".
................
r55907 | georg.brandl | 2007-06-11 10:05:47 -0700 (Mon, 11 Jun 2007) | 2 lines
Add a comment to explain that nb_oct and nb_hex are nonfunctional.
................
r55908 | guido.van.rossum | 2007-06-11 10:49:18 -0700 (Mon, 11 Jun 2007) | 2 lines
Get rid of unused imports and comment.
................
r55910 | guido.van.rossum | 2007-06-11 13:05:17 -0700 (Mon, 11 Jun 2007) | 2 lines
_Abstract.__new__ now requires either no arguments or __init__ overridden.
................
r55911 | guido.van.rossum | 2007-06-11 13:07:49 -0700 (Mon, 11 Jun 2007) | 7 lines
Move the collections ABCs to a separate file, _abcoll.py, in order to avoid
needing to import _collections.so during the bootstrap (this will become
apparent in the next submit of os.py).
Add (plain and mutable) ABCs for Set, Mapping, Sequence.
................
r55912 | guido.van.rossum | 2007-06-11 13:09:31 -0700 (Mon, 11 Jun 2007) | 2 lines
Rewrite the _Environ class to use the new collections ABCs.
................
r55913 | guido.van.rossum | 2007-06-11 13:59:45 -0700 (Mon, 11 Jun 2007) | 72 lines
Merged revisions 55869-55912 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r55869 | neal.norwitz | 2007-06-10 17:42:11 -0700 (Sun, 10 Jun 2007) | 1 line
Add Atul Varma for patch # 1667860
........
r55870 | neal.norwitz | 2007-06-10 18:22:03 -0700 (Sun, 10 Jun 2007) | 1 line
Ignore valgrind problems on Ubuntu from ld
........
r55872 | neal.norwitz | 2007-06-10 18:48:46 -0700 (Sun, 10 Jun 2007) | 2 lines
Ignore config.status.lineno which seems new (new autoconf?)
........
r55873 | neal.norwitz | 2007-06-10 19:14:39 -0700 (Sun, 10 Jun 2007) | 1 line
Prevent these tests from running on Win64 since they don\'t apply there either
........
r55874 | neal.norwitz | 2007-06-10 19:16:10 -0700 (Sun, 10 Jun 2007) | 5 lines
Fix a bug when there was a newline in the string expandtabs was called on.
This also catches another condition that can overflow.
Will backport.
........
r55879 | neal.norwitz | 2007-06-10 21:52:37 -0700 (Sun, 10 Jun 2007) | 1 line
Prevent hang if the port cannot be opened.
........
r55881 | neal.norwitz | 2007-06-10 22:28:45 -0700 (Sun, 10 Jun 2007) | 4 lines
Add all of the distuils modules that don't seem to have explicit tests. :-(
Move an import in mworkscompiler so that this module can be imported on
any platform. Hopefully this works on all platforms.
........
r55882 | neal.norwitz | 2007-06-10 22:35:10 -0700 (Sun, 10 Jun 2007) | 4 lines
SF #1734732, lower case the module names per PEP 8.
Will backport.
........
r55885 | neal.norwitz | 2007-06-10 23:16:48 -0700 (Sun, 10 Jun 2007) | 4 lines
Not sure why this only fails sometimes on Unix machines. Better
to disable it and only import msvccompiler on Windows since that's
the only place it can work anyways.
........
r55887 | neal.norwitz | 2007-06-11 00:29:43 -0700 (Mon, 11 Jun 2007) | 4 lines
Bug #1734723: Fix repr.Repr() so it doesn't ignore the maxtuple attribute.
Will backport
........
r55889 | neal.norwitz | 2007-06-11 00:36:24 -0700 (Mon, 11 Jun 2007) | 1 line
Reflow long line
........
r55896 | thomas.heller | 2007-06-11 08:58:33 -0700 (Mon, 11 Jun 2007) | 3 lines
Use "O&" in calls to PyArg_Parse when we need a 'void*' instead of "k"
or "K" codes.
........
r55901 | facundo.batista | 2007-06-11 09:27:08 -0700 (Mon, 11 Jun 2007) | 5 lines
Added versionchanged flag to all the methods which received
a new optional timeout parameter, and a versionadded flag to
the socket.create_connection function.
........
................
r55914 | guido.van.rossum | 2007-06-11 14:19:50 -0700 (Mon, 11 Jun 2007) | 3 lines
New super() implementation, for PEP 3135 (though the PEP is not yet updated
to this design, and small tweaks may still be made later).
................
r55923 | guido.van.rossum | 2007-06-11 21:15:24 -0700 (Mon, 11 Jun 2007) | 4 lines
I'm guessing this module broke when Neal ripped out the types module --
it used 'list' both as a local variable and as the built-in list type.
Renamed the local variable since that was easier.
................
r55924 | guido.van.rossum | 2007-06-11 21:20:05 -0700 (Mon, 11 Jun 2007) | 5 lines
Change all occurrences of super(<thisclass>, <firstarg>) to super().
Seems to have worked, all the tests still pass.
Exception: test_descr and test_descrtut, which have tons of these
and are there to test the various usages.
................
r55939 | collin.winter | 2007-06-12 13:57:33 -0700 (Tue, 12 Jun 2007) | 1 line
Patch #1735485: remove StandardError from the exception hierarchy.
................
r55954 | neal.norwitz | 2007-06-12 21:56:32 -0700 (Tue, 12 Jun 2007) | 51 lines
Merged revisions 55913-55950 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r55926 | marc-andre.lemburg | 2007-06-12 02:09:58 -0700 (Tue, 12 Jun 2007) | 3 lines
Apply patch #1734945 to support TurboLinux as distribution.
........
r55927 | marc-andre.lemburg | 2007-06-12 02:26:49 -0700 (Tue, 12 Jun 2007) | 3 lines
Add patch #1726668: Windows Vista support.
........
r55929 | thomas.heller | 2007-06-12 08:36:22 -0700 (Tue, 12 Jun 2007) | 1 line
Checkout, but do not yet try to build, exernal sources.
........
r55930 | thomas.heller | 2007-06-12 09:08:27 -0700 (Tue, 12 Jun 2007) | 6 lines
Add bufferoverflowU.lib to the libraries needed by _ssl (is this the
right thing to do?).
Set the /XP64 /RETAIL build enviroment in the makefile when building
ReleaseAMD64.
........
r55931 | thomas.heller | 2007-06-12 09:23:19 -0700 (Tue, 12 Jun 2007) | 5 lines
Revert this change, since it breaks the win32 build:
Add bufferoverflowU.lib to the libraries needed by _ssl (is this the
right thing to do?).
........
r55934 | thomas.heller | 2007-06-12 10:28:31 -0700 (Tue, 12 Jun 2007) | 3 lines
Specify the bufferoverflowU.lib to the makefile on the command line
(for ReleaseAMD64 builds).
........
r55937 | thomas.heller | 2007-06-12 12:02:59 -0700 (Tue, 12 Jun 2007) | 3 lines
Add bufferoverflowU.lib to PCBuild\_bsddb.vcproj.
Build sqlite3.dll and bsddb.
........
r55938 | thomas.heller | 2007-06-12 12:56:12 -0700 (Tue, 12 Jun 2007) | 2 lines
Don't rebuild Berkeley DB if not needed (this was committed by accident).
........
r55948 | martin.v.loewis | 2007-06-12 20:42:19 -0700 (Tue, 12 Jun 2007) | 3 lines
Provide PY_LLONG_MAX on all systems having long long.
Will backport to 2.5.
........
................
r55959 | guido.van.rossum | 2007-06-13 09:22:41 -0700 (Wed, 13 Jun 2007) | 2 lines
Fix a compilation warning.
................
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Wed, 13 Jun 2007 18:07:49 +0000 |
| parents | ba5d1a3977e9 |
| children | 4db0a0cc57ab |
| rev | line source |
|---|---|
| 145 | 1 |
| 6 | 2 /* Module support implementation */ |
| 3 | |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
4 #include "Python.h" |
| 6 | 5 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
6 #define FLAG_SIZE_T 1 |
|
1848
b724599401ff
Merge back to main trunk
Guido van Rossum <guido@python.org>
parents:
1319
diff
changeset
|
7 typedef double va_double; |
|
b724599401ff
Merge back to main trunk
Guido van Rossum <guido@python.org>
parents:
1319
diff
changeset
|
8 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
9 static PyObject *va_build_value(const char *, va_list, int); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
10 |
|
6602
4514a5ea3ec4
Fix importing of shared libraries from inside packages.
Guido van Rossum <guido@python.org>
parents:
5925
diff
changeset
|
11 /* Package context -- the full module name for package imports */ |
|
4514a5ea3ec4
Fix importing of shared libraries from inside packages.
Guido van Rossum <guido@python.org>
parents:
5925
diff
changeset
|
12 char *_Py_PackageContext = NULL; |
|
4514a5ea3ec4
Fix importing of shared libraries from inside packages.
Guido van Rossum <guido@python.org>
parents:
5925
diff
changeset
|
13 |
|
5925
93304b2e14cb
Removed fatal errors from Py_Initmodule4() (and thus from
Guido van Rossum <guido@python.org>
parents:
5373
diff
changeset
|
14 /* Py_InitModule4() parameters: |
| 2095 | 15 - name is the module name |
| 16 - methods is the list of top-level functions | |
| 17 - doc is the documentation string | |
| 18 - passthrough is passed as self to functions defined in the module | |
| 19 - api_version is the value of PYTHON_API_VERSION at the time the | |
| 20 module was compiled | |
|
5925
93304b2e14cb
Removed fatal errors from Py_Initmodule4() (and thus from
Guido van Rossum <guido@python.org>
parents:
5373
diff
changeset
|
21 |
|
93304b2e14cb
Removed fatal errors from Py_Initmodule4() (and thus from
Guido van Rossum <guido@python.org>
parents:
5373
diff
changeset
|
22 Return value is a borrowed reference to the module object; or NULL |
|
93304b2e14cb
Removed fatal errors from Py_Initmodule4() (and thus from
Guido van Rossum <guido@python.org>
parents:
5373
diff
changeset
|
23 if an error occurred (in Python 1.4 and before, errors were fatal). |
|
93304b2e14cb
Removed fatal errors from Py_Initmodule4() (and thus from
Guido van Rossum <guido@python.org>
parents:
5373
diff
changeset
|
24 Errors may still leak memory. |
|
2090
f78b387b54e0
New newmethodobject() interface takes struct methodlist pointer
Guido van Rossum <guido@python.org>
parents:
2062
diff
changeset
|
25 */ |
|
1848
b724599401ff
Merge back to main trunk
Guido van Rossum <guido@python.org>
parents:
1319
diff
changeset
|
26 |
| 2095 | 27 static char api_version_warning[] = |
|
18908
79c676f9b34a
This patch turns the Python API mismatch notice into a standard
Marc-André Lemburg <mal@egenix.com>
parents:
17032
diff
changeset
|
28 "Python C API version mismatch for module %.100s:\ |
|
79c676f9b34a
This patch turns the Python API mismatch notice into a standard
Marc-André Lemburg <mal@egenix.com>
parents:
17032
diff
changeset
|
29 This Python has API version %d, module %.100s has version %d."; |
| 2095 | 30 |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
31 PyObject * |
|
35999
9541369b0dca
Add const to several API functions that take char *.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
35935
diff
changeset
|
32 Py_InitModule4(const char *name, PyMethodDef *methods, const char *doc, |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
13447
diff
changeset
|
33 PyObject *passthrough, int module_api_version) |
| 6 | 34 { |
|
27559
faabd9867fb8
Provide __module__ attributes for functions defined in C and Python.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27533
diff
changeset
|
35 PyObject *m, *d, *v, *n; |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
36 PyMethodDef *ml; |
|
13859
94f6ec87930a
Add a test that Py_IsInitialized() in Py_InitModule4(). See
Guido van Rossum <guido@python.org>
parents:
13658
diff
changeset
|
37 if (!Py_IsInitialized()) |
|
94f6ec87930a
Add a test that Py_IsInitialized() in Py_InitModule4(). See
Guido van Rossum <guido@python.org>
parents:
13658
diff
changeset
|
38 Py_FatalError("Interpreter not initialized (version mismatch?)"); |
|
18908
79c676f9b34a
This patch turns the Python API mismatch notice into a standard
Marc-André Lemburg <mal@egenix.com>
parents:
17032
diff
changeset
|
39 if (module_api_version != PYTHON_API_VERSION) { |
|
79c676f9b34a
This patch turns the Python API mismatch notice into a standard
Marc-André Lemburg <mal@egenix.com>
parents:
17032
diff
changeset
|
40 char message[512]; |
|
79c676f9b34a
This patch turns the Python API mismatch notice into a standard
Marc-André Lemburg <mal@egenix.com>
parents:
17032
diff
changeset
|
41 PyOS_snprintf(message, sizeof(message), |
|
79c676f9b34a
This patch turns the Python API mismatch notice into a standard
Marc-André Lemburg <mal@egenix.com>
parents:
17032
diff
changeset
|
42 api_version_warning, name, |
|
79c676f9b34a
This patch turns the Python API mismatch notice into a standard
Marc-André Lemburg <mal@egenix.com>
parents:
17032
diff
changeset
|
43 PYTHON_API_VERSION, name, |
|
79c676f9b34a
This patch turns the Python API mismatch notice into a standard
Marc-André Lemburg <mal@egenix.com>
parents:
17032
diff
changeset
|
44 module_api_version); |
|
79c676f9b34a
This patch turns the Python API mismatch notice into a standard
Marc-André Lemburg <mal@egenix.com>
parents:
17032
diff
changeset
|
45 if (PyErr_Warn(PyExc_RuntimeWarning, message)) |
|
79c676f9b34a
This patch turns the Python API mismatch notice into a standard
Marc-André Lemburg <mal@egenix.com>
parents:
17032
diff
changeset
|
46 return NULL; |
|
79c676f9b34a
This patch turns the Python API mismatch notice into a standard
Marc-André Lemburg <mal@egenix.com>
parents:
17032
diff
changeset
|
47 } |
|
27559
faabd9867fb8
Provide __module__ attributes for functions defined in C and Python.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27533
diff
changeset
|
48 /* Make sure name is fully qualified. |
|
faabd9867fb8
Provide __module__ attributes for functions defined in C and Python.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27533
diff
changeset
|
49 |
|
faabd9867fb8
Provide __module__ attributes for functions defined in C and Python.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27533
diff
changeset
|
50 This is a bit of a hack: when the shared library is loaded, |
|
faabd9867fb8
Provide __module__ attributes for functions defined in C and Python.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27533
diff
changeset
|
51 the module name is "package.module", but the module calls |
|
faabd9867fb8
Provide __module__ attributes for functions defined in C and Python.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27533
diff
changeset
|
52 Py_InitModule*() with just "module" for the name. The shared |
|
faabd9867fb8
Provide __module__ attributes for functions defined in C and Python.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27533
diff
changeset
|
53 library loader squirrels away the true name of the module in |
|
faabd9867fb8
Provide __module__ attributes for functions defined in C and Python.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27533
diff
changeset
|
54 _Py_PackageContext, and Py_InitModule*() will substitute this |
|
faabd9867fb8
Provide __module__ attributes for functions defined in C and Python.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27533
diff
changeset
|
55 (if the name actually matches). |
|
faabd9867fb8
Provide __module__ attributes for functions defined in C and Python.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27533
diff
changeset
|
56 */ |
|
6602
4514a5ea3ec4
Fix importing of shared libraries from inside packages.
Guido van Rossum <guido@python.org>
parents:
5925
diff
changeset
|
57 if (_Py_PackageContext != NULL) { |
|
4514a5ea3ec4
Fix importing of shared libraries from inside packages.
Guido van Rossum <guido@python.org>
parents:
5925
diff
changeset
|
58 char *p = strrchr(_Py_PackageContext, '.'); |
|
4514a5ea3ec4
Fix importing of shared libraries from inside packages.
Guido van Rossum <guido@python.org>
parents:
5925
diff
changeset
|
59 if (p != NULL && strcmp(name, p+1) == 0) { |
|
4514a5ea3ec4
Fix importing of shared libraries from inside packages.
Guido van Rossum <guido@python.org>
parents:
5925
diff
changeset
|
60 name = _Py_PackageContext; |
|
4514a5ea3ec4
Fix importing of shared libraries from inside packages.
Guido van Rossum <guido@python.org>
parents:
5925
diff
changeset
|
61 _Py_PackageContext = NULL; |
|
4514a5ea3ec4
Fix importing of shared libraries from inside packages.
Guido van Rossum <guido@python.org>
parents:
5925
diff
changeset
|
62 } |
|
4514a5ea3ec4
Fix importing of shared libraries from inside packages.
Guido van Rossum <guido@python.org>
parents:
5925
diff
changeset
|
63 } |
|
5925
93304b2e14cb
Removed fatal errors from Py_Initmodule4() (and thus from
Guido van Rossum <guido@python.org>
parents:
5373
diff
changeset
|
64 if ((m = PyImport_AddModule(name)) == NULL) |
|
93304b2e14cb
Removed fatal errors from Py_Initmodule4() (and thus from
Guido van Rossum <guido@python.org>
parents:
5373
diff
changeset
|
65 return NULL; |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
66 d = PyModule_GetDict(m); |
|
24834
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
67 if (methods != NULL) { |
|
42013
cd125fe83051
Make identifiers str (not str8) objects throughout.
Martin v. Löwis <martin@v.loewis.de>
parents:
41766
diff
changeset
|
68 n = PyUnicode_FromString(name); |
|
27559
faabd9867fb8
Provide __module__ attributes for functions defined in C and Python.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27533
diff
changeset
|
69 if (n == NULL) |
|
faabd9867fb8
Provide __module__ attributes for functions defined in C and Python.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27533
diff
changeset
|
70 return NULL; |
|
24834
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
71 for (ml = methods; ml->ml_name != NULL; ml++) { |
|
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
72 if ((ml->ml_flags & METH_CLASS) || |
|
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
73 (ml->ml_flags & METH_STATIC)) { |
|
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
74 PyErr_SetString(PyExc_ValueError, |
|
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
75 "module functions cannot set" |
|
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
76 " METH_CLASS or METH_STATIC"); |
|
36774
35612a131ac6
Fix more memory leaks. Will backport to 2.4.
Martin v. Löwis <martin@v.loewis.de>
parents:
36521
diff
changeset
|
77 Py_DECREF(n); |
|
24834
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
78 return NULL; |
|
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
79 } |
|
27559
faabd9867fb8
Provide __module__ attributes for functions defined in C and Python.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
27533
diff
changeset
|
80 v = PyCFunction_NewEx(ml, passthrough, n); |
|
36774
35612a131ac6
Fix more memory leaks. Will backport to 2.4.
Martin v. Löwis <martin@v.loewis.de>
parents:
36521
diff
changeset
|
81 if (v == NULL) { |
|
35612a131ac6
Fix more memory leaks. Will backport to 2.4.
Martin v. Löwis <martin@v.loewis.de>
parents:
36521
diff
changeset
|
82 Py_DECREF(n); |
|
24834
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
83 return NULL; |
|
36774
35612a131ac6
Fix more memory leaks. Will backport to 2.4.
Martin v. Löwis <martin@v.loewis.de>
parents:
36521
diff
changeset
|
84 } |
|
24834
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
85 if (PyDict_SetItemString(d, ml->ml_name, v) != 0) { |
|
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
86 Py_DECREF(v); |
|
36774
35612a131ac6
Fix more memory leaks. Will backport to 2.4.
Martin v. Löwis <martin@v.loewis.de>
parents:
36521
diff
changeset
|
87 Py_DECREF(n); |
|
24834
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
88 return NULL; |
|
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
89 } |
|
64f4dd770c67
Py_InitModule4(): Accept NULL for the 'methods' argument. This makes
Fred Drake <fdrake@acm.org>
parents:
24400
diff
changeset
|
90 Py_DECREF(v); |
|
22613
ddc9543c76a0
Introduce two new flag bits that can be set in a PyMethodDef method
Fred Drake <fdrake@acm.org>
parents:
19343
diff
changeset
|
91 } |
|
35895
fe4c627b2096
Fix a few more memory leaks
Neal Norwitz <nnorwitz@gmail.com>
parents:
32656
diff
changeset
|
92 Py_DECREF(n); |
| 6 | 93 } |
|
2090
f78b387b54e0
New newmethodobject() interface takes struct methodlist pointer
Guido van Rossum <guido@python.org>
parents:
2062
diff
changeset
|
94 if (doc != NULL) { |
|
42060
ba5d1a3977e9
Make module docstrings unicode objects.
Walter Dörwald <walter@livinglogic.de>
parents:
42013
diff
changeset
|
95 v = PyUnicode_FromString(doc); |
|
18991
360cece76123
Plug a memory leak in Py_InitModule4(): when PyDict_SetItemString() failed,
Fred Drake <fdrake@acm.org>
parents:
18908
diff
changeset
|
96 if (v == NULL || PyDict_SetItemString(d, "__doc__", v) != 0) { |
|
26664
fe2d422385b1
Fixed potential crash: v can be NULL here, so use Py_XDECREF rather than Py_DECREF
Just van Rossum <just@letterror.com>
parents:
24834
diff
changeset
|
97 Py_XDECREF(v); |
|
5925
93304b2e14cb
Removed fatal errors from Py_Initmodule4() (and thus from
Guido van Rossum <guido@python.org>
parents:
5373
diff
changeset
|
98 return NULL; |
|
18991
360cece76123
Plug a memory leak in Py_InitModule4(): when PyDict_SetItemString() failed,
Fred Drake <fdrake@acm.org>
parents:
18908
diff
changeset
|
99 } |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
100 Py_DECREF(v); |
|
2090
f78b387b54e0
New newmethodobject() interface takes struct methodlist pointer
Guido van Rossum <guido@python.org>
parents:
2062
diff
changeset
|
101 } |
| 86 | 102 return m; |
| 6 | 103 } |
| 104 | |
| 105 | |
|
1211
406860dfaac7
* stdwinmodule.c: various new commands: setwin{pos,size},
Guido van Rossum <guido@python.org>
parents:
1198
diff
changeset
|
106 /* Helper for mkvalue() to scan the length of a format */ |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
107 |
|
27533
842d6a24497a
Style consistency, so "grep ^function ..." works as expected.
Fred Drake <fdrake@acm.org>
parents:
26664
diff
changeset
|
108 static int |
|
35999
9541369b0dca
Add const to several API functions that take char *.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
35935
diff
changeset
|
109 countformat(const char *format, int endchar) |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
110 { |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
111 int count = 0; |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
112 int level = 0; |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
113 while (level > 0 || *format != endchar) { |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
114 switch (*format) { |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
115 case '\0': |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
116 /* Premature end */ |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
117 PyErr_SetString(PyExc_SystemError, |
|
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
118 "unmatched paren in format"); |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
119 return -1; |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
120 case '(': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
121 case '[': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
122 case '{': |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
123 if (level == 0) |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
124 count++; |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
125 level++; |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
126 break; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
127 case ')': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
128 case ']': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
129 case '}': |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
130 level--; |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
131 break; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
132 case '#': |
|
2202
9894e55468ec
support "O&" taking an object constructor a void*
Guido van Rossum <guido@python.org>
parents:
2154
diff
changeset
|
133 case '&': |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
134 case ',': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
135 case ':': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
136 case ' ': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
137 case '\t': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
138 break; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
139 default: |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
140 if (level == 0) |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
141 count++; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
142 } |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
143 format++; |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
144 } |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
145 return count; |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
146 } |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
147 |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
148 |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
149 /* Generic function to create a value -- the inverse of getargs() */ |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
150 /* After an original idea and first implementation by Steven Miale */ |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
151 |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
152 static PyObject *do_mktuple(const char**, va_list *, int, int, int); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
153 static PyObject *do_mklist(const char**, va_list *, int, int, int); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
154 static PyObject *do_mkdict(const char**, va_list *, int, int, int); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
155 static PyObject *do_mkvalue(const char**, va_list *, int); |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
156 |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
157 |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
158 static PyObject * |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
159 do_mkdict(const char **p_format, va_list *p_va, int endchar, int n, int flags) |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
160 { |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
161 PyObject *d; |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
162 int i; |
|
32656
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
163 int itemfailed = 0; |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
164 if (n < 0) |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
165 return NULL; |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
166 if ((d = PyDict_New()) == NULL) |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
167 return NULL; |
|
32656
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
168 /* Note that we can't bail immediately on error as this will leak |
|
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
169 refcounts on any 'N' arguments. */ |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
170 for (i = 0; i < n; i+= 2) { |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
171 PyObject *k, *v; |
|
6613
2e874a5a912f
Plug memory leak in Py_BuildValue when using {...} to construct dictionaries.
Guido van Rossum <guido@python.org>
parents:
6602
diff
changeset
|
172 int err; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
173 k = do_mkvalue(p_format, p_va, flags); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
174 if (k == NULL) { |
|
32656
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
175 itemfailed = 1; |
|
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
176 Py_INCREF(Py_None); |
|
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
177 k = Py_None; |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
178 } |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
179 v = do_mkvalue(p_format, p_va, flags); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
180 if (v == NULL) { |
|
32656
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
181 itemfailed = 1; |
|
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
182 Py_INCREF(Py_None); |
|
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
183 v = Py_None; |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
184 } |
|
6613
2e874a5a912f
Plug memory leak in Py_BuildValue when using {...} to construct dictionaries.
Guido van Rossum <guido@python.org>
parents:
6602
diff
changeset
|
185 err = PyDict_SetItem(d, k, v); |
|
2e874a5a912f
Plug memory leak in Py_BuildValue when using {...} to construct dictionaries.
Guido van Rossum <guido@python.org>
parents:
6602
diff
changeset
|
186 Py_DECREF(k); |
|
2e874a5a912f
Plug memory leak in Py_BuildValue when using {...} to construct dictionaries.
Guido van Rossum <guido@python.org>
parents:
6602
diff
changeset
|
187 Py_DECREF(v); |
|
32656
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
188 if (err < 0 || itemfailed) { |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
189 Py_DECREF(d); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
190 return NULL; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
191 } |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
192 } |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
193 if (d != NULL && **p_format != endchar) { |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
194 Py_DECREF(d); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
195 d = NULL; |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
196 PyErr_SetString(PyExc_SystemError, |
|
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
197 "Unmatched paren in format"); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
198 } |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
199 else if (endchar) |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
200 ++*p_format; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
201 return d; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
202 } |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
203 |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
204 static PyObject * |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
205 do_mklist(const char **p_format, va_list *p_va, int endchar, int n, int flags) |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
206 { |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
207 PyObject *v; |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
208 int i; |
|
32656
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
209 int itemfailed = 0; |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
210 if (n < 0) |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
211 return NULL; |
|
36858
7fac5d79d043
Try to cleanup the error handling a bit so there aren't false positives
Neal Norwitz <nnorwitz@gmail.com>
parents:
36774
diff
changeset
|
212 v = PyList_New(n); |
|
7fac5d79d043
Try to cleanup the error handling a bit so there aren't false positives
Neal Norwitz <nnorwitz@gmail.com>
parents:
36774
diff
changeset
|
213 if (v == NULL) |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
214 return NULL; |
|
32656
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
215 /* Note that we can't bail immediately on error as this will leak |
|
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
216 refcounts on any 'N' arguments. */ |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
217 for (i = 0; i < n; i++) { |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
218 PyObject *w = do_mkvalue(p_format, p_va, flags); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
219 if (w == NULL) { |
|
32656
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
220 itemfailed = 1; |
|
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
221 Py_INCREF(Py_None); |
|
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
222 w = Py_None; |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
223 } |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
224 PyList_SET_ITEM(v, i, w); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
225 } |
|
36858
7fac5d79d043
Try to cleanup the error handling a bit so there aren't false positives
Neal Norwitz <nnorwitz@gmail.com>
parents:
36774
diff
changeset
|
226 |
|
7fac5d79d043
Try to cleanup the error handling a bit so there aren't false positives
Neal Norwitz <nnorwitz@gmail.com>
parents:
36774
diff
changeset
|
227 if (itemfailed) { |
|
7fac5d79d043
Try to cleanup the error handling a bit so there aren't false positives
Neal Norwitz <nnorwitz@gmail.com>
parents:
36774
diff
changeset
|
228 /* do_mkvalue() should have already set an error */ |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
229 Py_DECREF(v); |
|
36858
7fac5d79d043
Try to cleanup the error handling a bit so there aren't false positives
Neal Norwitz <nnorwitz@gmail.com>
parents:
36774
diff
changeset
|
230 return NULL; |
|
7fac5d79d043
Try to cleanup the error handling a bit so there aren't false positives
Neal Norwitz <nnorwitz@gmail.com>
parents:
36774
diff
changeset
|
231 } |
|
7fac5d79d043
Try to cleanup the error handling a bit so there aren't false positives
Neal Norwitz <nnorwitz@gmail.com>
parents:
36774
diff
changeset
|
232 if (**p_format != endchar) { |
|
7fac5d79d043
Try to cleanup the error handling a bit so there aren't false positives
Neal Norwitz <nnorwitz@gmail.com>
parents:
36774
diff
changeset
|
233 Py_DECREF(v); |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
234 PyErr_SetString(PyExc_SystemError, |
|
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
235 "Unmatched paren in format"); |
|
36858
7fac5d79d043
Try to cleanup the error handling a bit so there aren't false positives
Neal Norwitz <nnorwitz@gmail.com>
parents:
36774
diff
changeset
|
236 return NULL; |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
237 } |
|
36858
7fac5d79d043
Try to cleanup the error handling a bit so there aren't false positives
Neal Norwitz <nnorwitz@gmail.com>
parents:
36774
diff
changeset
|
238 if (endchar) |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
239 ++*p_format; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
240 return v; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
241 } |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
242 |
|
12520
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
243 static int |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
244 _ustrlen(Py_UNICODE *u) |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
245 { |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
246 int i = 0; |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
247 Py_UNICODE *v = u; |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
248 while (*v != 0) { i++; v++; } |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
249 return i; |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
250 } |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
251 |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
252 static PyObject * |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
253 do_mktuple(const char **p_format, va_list *p_va, int endchar, int n, int flags) |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
254 { |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
255 PyObject *v; |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
256 int i; |
|
32656
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
257 int itemfailed = 0; |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
258 if (n < 0) |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
259 return NULL; |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
260 if ((v = PyTuple_New(n)) == NULL) |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
261 return NULL; |
|
32656
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
262 /* Note that we can't bail immediately on error as this will leak |
|
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
263 refcounts on any 'N' arguments. */ |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
264 for (i = 0; i < n; i++) { |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
265 PyObject *w = do_mkvalue(p_format, p_va, flags); |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
266 if (w == NULL) { |
|
32656
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
267 itemfailed = 1; |
|
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
268 Py_INCREF(Py_None); |
|
391937571065
This is Pete Shinners' patch from his bug report
Michael W. Hudson <mwh@python.net>
parents:
30968
diff
changeset
|
269 w = Py_None; |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
270 } |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
271 PyTuple_SET_ITEM(v, i, w); |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
272 } |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
273 if (itemfailed) { |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
274 /* do_mkvalue() should have already set an error */ |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
275 Py_DECREF(v); |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
276 return NULL; |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
277 } |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
278 if (**p_format != endchar) { |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
279 Py_DECREF(v); |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
280 PyErr_SetString(PyExc_SystemError, |
|
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
281 "Unmatched paren in format"); |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
282 return NULL; |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
283 } |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
284 if (endchar) |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
285 ++*p_format; |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
286 return v; |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
287 } |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
288 |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
289 static PyObject * |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
290 do_mkvalue(const char **p_format, va_list *p_va, int flags) |
|
860
39134c99c923
Added parameter decls to do_mkvalue for non-template machines
Guido van Rossum <guido@python.org>
parents:
817
diff
changeset
|
291 { |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
292 for (;;) { |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
293 switch (*(*p_format)++) { |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
294 case '(': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
295 return do_mktuple(p_format, p_va, ')', |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
296 countformat(*p_format, ')'), flags); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
297 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
298 case '[': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
299 return do_mklist(p_format, p_va, ']', |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
300 countformat(*p_format, ']'), flags); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
301 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
302 case '{': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
303 return do_mkdict(p_format, p_va, '}', |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
304 countformat(*p_format, '}'), flags); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
305 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
306 case 'b': |
|
14588
dcbc084d046e
Cast UCHAR_MAX to int before doing the comparison for overflow of the
Jack Jansen <jack.jansen@cwi.nl>
parents:
14375
diff
changeset
|
307 case 'B': |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
308 case 'h': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
309 case 'i': |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
310 return PyInt_FromLong((long)va_arg(*p_va, int)); |
|
13378
113d833eea7e
Added support for H (unsigned short) specifier in PyArg_ParseTuple and
Jack Jansen <jack.jansen@cwi.nl>
parents:
13330
diff
changeset
|
311 |
|
113d833eea7e
Added support for H (unsigned short) specifier in PyArg_ParseTuple and
Jack Jansen <jack.jansen@cwi.nl>
parents:
13330
diff
changeset
|
312 case 'H': |
|
113d833eea7e
Added support for H (unsigned short) specifier in PyArg_ParseTuple and
Jack Jansen <jack.jansen@cwi.nl>
parents:
13330
diff
changeset
|
313 return PyInt_FromLong((long)va_arg(*p_va, unsigned int)); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
314 |
|
35935
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
315 case 'I': |
|
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
316 { |
|
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
317 unsigned int n; |
|
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
318 n = va_arg(*p_va, unsigned int); |
|
36115
03dbec0d9504
do_mkvalue(), 'I' and 'k' cases: squash legitimate
Tim Peters <tim.peters@gmail.com>
parents:
35999
diff
changeset
|
319 if (n > (unsigned long)PyInt_GetMax()) |
|
35935
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
320 return PyLong_FromUnsignedLong((unsigned long)n); |
|
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
321 else |
|
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
322 return PyInt_FromLong(n); |
|
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
323 } |
|
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
324 |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36115
diff
changeset
|
325 case 'n': |
|
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36115
diff
changeset
|
326 #if SIZEOF_SIZE_T!=SIZEOF_LONG |
|
36521
30aef3ce2b26
Use Py_ssize_t to count the
Martin v. Löwis <martin@v.loewis.de>
parents:
36501
diff
changeset
|
327 return PyInt_FromSsize_t(va_arg(*p_va, Py_ssize_t)); |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36115
diff
changeset
|
328 #endif |
|
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36115
diff
changeset
|
329 /* Fall through from 'n' to 'l' if Py_ssize_t is long */ |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
330 case 'l': |
|
35935
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
331 return PyInt_FromLong(va_arg(*p_va, long)); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
332 |
|
28658
8836529e9e66
dded missing k and K format specifiers to Py_BuildValue and friends.
Jack Jansen <jack.jansen@cwi.nl>
parents:
28437
diff
changeset
|
333 case 'k': |
|
35935
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
334 { |
|
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
335 unsigned long n; |
|
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
336 n = va_arg(*p_va, unsigned long); |
|
36115
03dbec0d9504
do_mkvalue(), 'I' and 'k' cases: squash legitimate
Tim Peters <tim.peters@gmail.com>
parents:
35999
diff
changeset
|
337 if (n > (unsigned long)PyInt_GetMax()) |
|
35935
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
338 return PyLong_FromUnsignedLong(n); |
|
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
339 else |
|
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
340 return PyInt_FromLong(n); |
|
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
341 } |
|
28658
8836529e9e66
dded missing k and K format specifiers to Py_BuildValue and friends.
Jack Jansen <jack.jansen@cwi.nl>
parents:
28437
diff
changeset
|
342 |
|
9949
98e37347378b
Change rare occurrences of #if HAVE_LONG_LONG to #ifdef.
Guido van Rossum <guido@python.org>
parents:
9722
diff
changeset
|
343 #ifdef HAVE_LONG_LONG |
|
8822
bd47ee068b83
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8640
diff
changeset
|
344 case 'L': |
|
28437
871da703e4c0
Rename LONG_LONG to PY_LONG_LONG. Fixes #710285.
Martin v. Löwis <martin@v.loewis.de>
parents:
27559
diff
changeset
|
345 return PyLong_FromLongLong((PY_LONG_LONG)va_arg(*p_va, PY_LONG_LONG)); |
|
28658
8836529e9e66
dded missing k and K format specifiers to Py_BuildValue and friends.
Jack Jansen <jack.jansen@cwi.nl>
parents:
28437
diff
changeset
|
346 |
|
8836529e9e66
dded missing k and K format specifiers to Py_BuildValue and friends.
Jack Jansen <jack.jansen@cwi.nl>
parents:
28437
diff
changeset
|
347 case 'K': |
|
35935
7c8800b81c50
bug #1281408: make Py_BuildValue work with unsigned longs and long longs
Georg Brandl <georg@python.org>
parents:
35895
diff
changeset
|
348 return PyLong_FromUnsignedLongLong((PY_LONG_LONG)va_arg(*p_va, unsigned PY_LONG_LONG)); |
|
8822
bd47ee068b83
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8640
diff
changeset
|
349 #endif |
|
12520
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
350 case 'u': |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
351 { |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
352 PyObject *v; |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
353 Py_UNICODE *u = va_arg(*p_va, Py_UNICODE *); |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
354 Py_ssize_t n; |
|
12520
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
355 if (**p_format == '#') { |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
356 ++*p_format; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
357 if (flags & FLAG_SIZE_T) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
358 n = va_arg(*p_va, Py_ssize_t); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
359 else |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
360 n = va_arg(*p_va, int); |
|
12520
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
361 } |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
362 else |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
363 n = -1; |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
364 if (u == NULL) { |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
365 v = Py_None; |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
366 Py_INCREF(v); |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
367 } |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
368 else { |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
369 if (n < 0) |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
370 n = _ustrlen(u); |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
371 v = PyUnicode_FromUnicode(u, n); |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
372 } |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
373 return v; |
|
b6b7bd20c845
Brian Hooper <brian_takashi@hotmail.com>:
Fred Drake <fdrake@acm.org>
parents:
9949
diff
changeset
|
374 } |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
375 case 'f': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
376 case 'd': |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
377 return PyFloat_FromDouble( |
|
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
378 (double)va_arg(*p_va, va_double)); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
379 |
|
17032
d5811af8acf3
Py_BuildValue(): Add "D" conversion to create a Python complex value from
Fred Drake <fdrake@acm.org>
parents:
14869
diff
changeset
|
380 #ifndef WITHOUT_COMPLEX |
|
d5811af8acf3
Py_BuildValue(): Add "D" conversion to create a Python complex value from
Fred Drake <fdrake@acm.org>
parents:
14869
diff
changeset
|
381 case 'D': |
|
d5811af8acf3
Py_BuildValue(): Add "D" conversion to create a Python complex value from
Fred Drake <fdrake@acm.org>
parents:
14869
diff
changeset
|
382 return PyComplex_FromCComplex( |
|
d5811af8acf3
Py_BuildValue(): Add "D" conversion to create a Python complex value from
Fred Drake <fdrake@acm.org>
parents:
14869
diff
changeset
|
383 *((Py_complex *)va_arg(*p_va, Py_complex *))); |
|
d5811af8acf3
Py_BuildValue(): Add "D" conversion to create a Python complex value from
Fred Drake <fdrake@acm.org>
parents:
14869
diff
changeset
|
384 #endif /* WITHOUT_COMPLEX */ |
|
d5811af8acf3
Py_BuildValue(): Add "D" conversion to create a Python complex value from
Fred Drake <fdrake@acm.org>
parents:
14869
diff
changeset
|
385 |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
386 case 'c': |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
387 { |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
388 char p[1]; |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36115
diff
changeset
|
389 p[0] = (char)va_arg(*p_va, int); |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
390 return PyString_FromStringAndSize(p, 1); |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
391 } |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
392 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
393 case 's': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
394 case 'z': |
|
816
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
395 { |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
396 PyObject *v; |
|
816
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
397 char *str = va_arg(*p_va, char *); |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
398 Py_ssize_t n; |
|
816
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
399 if (**p_format == '#') { |
|
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
400 ++*p_format; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
401 if (flags & FLAG_SIZE_T) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
402 n = va_arg(*p_va, Py_ssize_t); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
403 else |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
404 n = va_arg(*p_va, int); |
|
816
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
405 } |
|
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
406 else |
|
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
407 n = -1; |
|
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
408 if (str == NULL) { |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
409 v = Py_None; |
|
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
410 Py_INCREF(v); |
|
816
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
411 } |
|
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
412 else { |
|
13096
8c8de5b736dc
Trent Mick's Win64 changes: size_t vs. int or long; also some overflow
Guido van Rossum <guido@python.org>
parents:
12520
diff
changeset
|
413 if (n < 0) { |
|
8c8de5b736dc
Trent Mick's Win64 changes: size_t vs. int or long; also some overflow
Guido van Rossum <guido@python.org>
parents:
12520
diff
changeset
|
414 size_t m = strlen(str); |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
415 if (m > PY_SSIZE_T_MAX) { |
|
13096
8c8de5b736dc
Trent Mick's Win64 changes: size_t vs. int or long; also some overflow
Guido van Rossum <guido@python.org>
parents:
12520
diff
changeset
|
416 PyErr_SetString(PyExc_OverflowError, |
|
8c8de5b736dc
Trent Mick's Win64 changes: size_t vs. int or long; also some overflow
Guido van Rossum <guido@python.org>
parents:
12520
diff
changeset
|
417 "string too long for Python string"); |
|
8c8de5b736dc
Trent Mick's Win64 changes: size_t vs. int or long; also some overflow
Guido van Rossum <guido@python.org>
parents:
12520
diff
changeset
|
418 return NULL; |
|
8c8de5b736dc
Trent Mick's Win64 changes: size_t vs. int or long; also some overflow
Guido van Rossum <guido@python.org>
parents:
12520
diff
changeset
|
419 } |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
420 n = (Py_ssize_t)m; |
|
13096
8c8de5b736dc
Trent Mick's Win64 changes: size_t vs. int or long; also some overflow
Guido van Rossum <guido@python.org>
parents:
12520
diff
changeset
|
421 } |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
422 v = PyString_FromStringAndSize(str, n); |
|
816
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
423 } |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
424 return v; |
|
816
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
425 } |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
426 |
|
41766
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
427 case 'U': |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
428 { |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
429 PyObject *v; |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
430 char *str = va_arg(*p_va, char *); |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
431 Py_ssize_t n; |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
432 if (**p_format == '#') { |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
433 ++*p_format; |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
434 if (flags & FLAG_SIZE_T) |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
435 n = va_arg(*p_va, Py_ssize_t); |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
436 else |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
437 n = va_arg(*p_va, int); |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
438 } |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
439 else |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
440 n = -1; |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
441 if (str == NULL) { |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
442 v = Py_None; |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
443 Py_INCREF(v); |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
444 } |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
445 else { |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
446 if (n < 0) { |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
447 size_t m = strlen(str); |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
448 if (m > PY_SSIZE_T_MAX) { |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
449 PyErr_SetString(PyExc_OverflowError, |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
450 "string too long for Python string"); |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
451 return NULL; |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
452 } |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
453 n = (Py_ssize_t)m; |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
454 } |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
455 v = PyUnicode_FromStringAndSize(str, n); |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
456 } |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
457 return v; |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
458 } |
|
d6aa7edf217a
Add 'U'/'U#' format characters to Py_BuildValue (and thus
Walter Dörwald <walter@livinglogic.de>
parents:
41611
diff
changeset
|
459 |
|
41611
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
460 case 'y': |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
461 { |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
462 PyObject *v; |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
463 char *str = va_arg(*p_va, char *); |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
464 Py_ssize_t n; |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
465 if (**p_format == '#') { |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
466 ++*p_format; |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
467 if (flags & FLAG_SIZE_T) |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
468 n = va_arg(*p_va, Py_ssize_t); |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
469 else |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
470 n = va_arg(*p_va, int); |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
471 } |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
472 else |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
473 n = -1; |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
474 if (str == NULL) { |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
475 v = Py_None; |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
476 Py_INCREF(v); |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
477 } |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
478 else { |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
479 if (n < 0) { |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
480 size_t m = strlen(str); |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
481 if (m > PY_SSIZE_T_MAX) { |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
482 PyErr_SetString(PyExc_OverflowError, |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
483 "string too long for Python bytes"); |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
484 return NULL; |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
485 } |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
486 n = (Py_ssize_t)m; |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
487 } |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
488 v = PyBytes_FromStringAndSize(str, n); |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
489 } |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
490 return v; |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
491 } |
|
c48fe4dc34a9
Change UnicodeDecodeError objects so that the 'object' attribute
Walter Dörwald <walter@livinglogic.de>
parents:
41587
diff
changeset
|
492 |
|
9720
24ca64134594
Add 'N' format character to Py_BuildValue -- like 'O' but doesn't INCREF.
Guido van Rossum <guido@python.org>
parents:
9044
diff
changeset
|
493 case 'N': |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
494 case 'S': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
495 case 'O': |
|
2202
9894e55468ec
support "O&" taking an object constructor a void*
Guido van Rossum <guido@python.org>
parents:
2154
diff
changeset
|
496 if (**p_format == '&') { |
|
13447
a89f7f268de4
Nuke all remaining occurrences of Py_PROTO and Py_FPROTO.
Tim Peters <tim.peters@gmail.com>
parents:
13378
diff
changeset
|
497 typedef PyObject *(*converter)(void *); |
|
2202
9894e55468ec
support "O&" taking an object constructor a void*
Guido van Rossum <guido@python.org>
parents:
2154
diff
changeset
|
498 converter func = va_arg(*p_va, converter); |
|
9894e55468ec
support "O&" taking an object constructor a void*
Guido van Rossum <guido@python.org>
parents:
2154
diff
changeset
|
499 void *arg = va_arg(*p_va, void *); |
|
9894e55468ec
support "O&" taking an object constructor a void*
Guido van Rossum <guido@python.org>
parents:
2154
diff
changeset
|
500 ++*p_format; |
|
9894e55468ec
support "O&" taking an object constructor a void*
Guido van Rossum <guido@python.org>
parents:
2154
diff
changeset
|
501 return (*func)(arg); |
|
9894e55468ec
support "O&" taking an object constructor a void*
Guido van Rossum <guido@python.org>
parents:
2154
diff
changeset
|
502 } |
|
9894e55468ec
support "O&" taking an object constructor a void*
Guido van Rossum <guido@python.org>
parents:
2154
diff
changeset
|
503 else { |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
504 PyObject *v; |
|
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
505 v = va_arg(*p_va, PyObject *); |
|
9722
3955f787e9a1
Oops, forgot a pair of {}'s. (Greg Couch)
Guido van Rossum <guido@python.org>
parents:
9720
diff
changeset
|
506 if (v != NULL) { |
|
9720
24ca64134594
Add 'N' format character to Py_BuildValue -- like 'O' but doesn't INCREF.
Guido van Rossum <guido@python.org>
parents:
9044
diff
changeset
|
507 if (*(*p_format - 1) != 'N') |
|
24ca64134594
Add 'N' format character to Py_BuildValue -- like 'O' but doesn't INCREF.
Guido van Rossum <guido@python.org>
parents:
9044
diff
changeset
|
508 Py_INCREF(v); |
|
9722
3955f787e9a1
Oops, forgot a pair of {}'s. (Greg Couch)
Guido van Rossum <guido@python.org>
parents:
9720
diff
changeset
|
509 } |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
510 else if (!PyErr_Occurred()) |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
511 /* If a NULL was passed |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
512 * because a call that should |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
513 * have constructed a value |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
514 * failed, that's OK, and we |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
515 * pass the error on; but if |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
516 * no error occurred it's not |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
517 * clear that the caller knew |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
518 * what she was doing. */ |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
519 PyErr_SetString(PyExc_SystemError, |
|
8640
8e86a797e596
Two error messages still used the old name of the functio mkvalue() --
Guido van Rossum <guido@python.org>
parents:
6613
diff
changeset
|
520 "NULL object passed to Py_BuildValue"); |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
521 return v; |
|
816
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
522 } |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
523 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
524 case ':': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
525 case ',': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
526 case ' ': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
527 case '\t': |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
528 break; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
529 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
530 default: |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
531 PyErr_SetString(PyExc_SystemError, |
|
8640
8e86a797e596
Two error messages still used the old name of the functio mkvalue() --
Guido van Rossum <guido@python.org>
parents:
6613
diff
changeset
|
532 "bad format char passed to Py_BuildValue"); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
533 return NULL; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
534 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
535 } |
|
816
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
536 } |
|
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
537 } |
|
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
538 |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
539 |
|
27533
842d6a24497a
Style consistency, so "grep ^function ..." works as expected.
Fred Drake <fdrake@acm.org>
parents:
26664
diff
changeset
|
540 PyObject * |
|
35999
9541369b0dca
Add const to several API functions that take char *.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
35935
diff
changeset
|
541 Py_BuildValue(const char *format, ...) |
|
816
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
542 { |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
543 va_list va; |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
544 PyObject* retval; |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
545 va_start(va, format); |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
546 retval = va_build_value(format, va, 0); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
547 va_end(va); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
548 return retval; |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
549 } |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
550 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
551 PyObject * |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
552 _Py_BuildValue_SizeT(const char *format, ...) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
553 { |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
554 va_list va; |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
555 PyObject* retval; |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
556 va_start(va, format); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
557 retval = va_build_value(format, va, FLAG_SIZE_T); |
|
817
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
558 va_end(va); |
|
aa633f0defa6
Merged with Steve Miale's version
Guido van Rossum <guido@python.org>
parents:
816
diff
changeset
|
559 return retval; |
|
816
e4a27d84ea36
Added mkvalue() function
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
560 } |
|
1252
c4cd0d9d8281
* Changed many files to use mkvalue() instead of newtupleobject().
Guido van Rossum <guido@python.org>
parents:
1211
diff
changeset
|
561 |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
562 PyObject * |
|
35999
9541369b0dca
Add const to several API functions that take char *.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
35935
diff
changeset
|
563 Py_VaBuildValue(const char *format, va_list va) |
|
1252
c4cd0d9d8281
* Changed many files to use mkvalue() instead of newtupleobject().
Guido van Rossum <guido@python.org>
parents:
1211
diff
changeset
|
564 { |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
565 return va_build_value(format, va, 0); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
566 } |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
567 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
568 PyObject * |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
569 _Py_VaBuildValue_SizeT(const char *format, va_list va) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
570 { |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
571 return va_build_value(format, va, FLAG_SIZE_T); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
572 } |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
573 |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
574 static PyObject * |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
575 va_build_value(const char *format, va_list va, int flags) |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
576 { |
|
35999
9541369b0dca
Add const to several API functions that take char *.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
35935
diff
changeset
|
577 const char *f = format; |
|
1252
c4cd0d9d8281
* Changed many files to use mkvalue() instead of newtupleobject().
Guido van Rossum <guido@python.org>
parents:
1211
diff
changeset
|
578 int n = countformat(f, '\0'); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
579 va_list lva; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
580 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
581 #ifdef VA_LIST_IS_ARRAY |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
582 memcpy(lva, va, sizeof(va_list)); |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
583 #else |
|
24400
81ca6ca5c307
Patch #554716: Use __va_copy where available.
Martin v. Löwis <martin@v.loewis.de>
parents:
23888
diff
changeset
|
584 #ifdef __va_copy |
|
81ca6ca5c307
Patch #554716: Use __va_copy where available.
Martin v. Löwis <martin@v.loewis.de>
parents:
23888
diff
changeset
|
585 __va_copy(lva, va); |
|
81ca6ca5c307
Patch #554716: Use __va_copy where available.
Martin v. Löwis <martin@v.loewis.de>
parents:
23888
diff
changeset
|
586 #else |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
587 lva = va; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
588 #endif |
|
24400
81ca6ca5c307
Patch #554716: Use __va_copy where available.
Martin v. Löwis <martin@v.loewis.de>
parents:
23888
diff
changeset
|
589 #endif |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
590 |
|
1252
c4cd0d9d8281
* Changed many files to use mkvalue() instead of newtupleobject().
Guido van Rossum <guido@python.org>
parents:
1211
diff
changeset
|
591 if (n < 0) |
|
c4cd0d9d8281
* Changed many files to use mkvalue() instead of newtupleobject().
Guido van Rossum <guido@python.org>
parents:
1211
diff
changeset
|
592 return NULL; |
|
c4cd0d9d8281
* Changed many files to use mkvalue() instead of newtupleobject().
Guido van Rossum <guido@python.org>
parents:
1211
diff
changeset
|
593 if (n == 0) { |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
594 Py_INCREF(Py_None); |
|
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
595 return Py_None; |
|
1252
c4cd0d9d8281
* Changed many files to use mkvalue() instead of newtupleobject().
Guido van Rossum <guido@python.org>
parents:
1211
diff
changeset
|
596 } |
|
c4cd0d9d8281
* Changed many files to use mkvalue() instead of newtupleobject().
Guido van Rossum <guido@python.org>
parents:
1211
diff
changeset
|
597 if (n == 1) |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
598 return do_mkvalue(&f, &lva, flags); |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36858
diff
changeset
|
599 return do_mktuple(&f, &lva, '\0', n, flags); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
600 } |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
601 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
602 |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
603 PyObject * |
|
35999
9541369b0dca
Add const to several API functions that take char *.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
35935
diff
changeset
|
604 PyEval_CallFunction(PyObject *obj, const char *format, ...) |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
605 { |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
606 va_list vargs; |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
607 PyObject *args; |
|
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
608 PyObject *res; |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
609 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
610 va_start(vargs, format); |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
611 |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
612 args = Py_VaBuildValue(format, vargs); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
613 va_end(vargs); |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
614 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
615 if (args == NULL) |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
616 return NULL; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
617 |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
618 res = PyEval_CallObject(obj, args); |
|
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
619 Py_DECREF(args); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
620 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
621 return res; |
|
1252
c4cd0d9d8281
* Changed many files to use mkvalue() instead of newtupleobject().
Guido van Rossum <guido@python.org>
parents:
1211
diff
changeset
|
622 } |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
623 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
624 |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
625 PyObject * |
|
35999
9541369b0dca
Add const to several API functions that take char *.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
35935
diff
changeset
|
626 PyEval_CallMethod(PyObject *obj, const char *methodname, const char *format, ...) |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
627 { |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
628 va_list vargs; |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
629 PyObject *meth; |
|
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
630 PyObject *args; |
|
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
631 PyObject *res; |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
632 |
|
8898
492363d6bc94
# Fix strange type (methonname instead of methodname).
Guido van Rossum <guido@python.org>
parents:
8822
diff
changeset
|
633 meth = PyObject_GetAttrString(obj, methodname); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
634 if (meth == NULL) |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
635 return NULL; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
636 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
637 va_start(vargs, format); |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
638 |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
639 args = Py_VaBuildValue(format, vargs); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
640 va_end(vargs); |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
641 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
642 if (args == NULL) { |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
643 Py_DECREF(meth); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
644 return NULL; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
645 } |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
646 |
|
5373
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
647 res = PyEval_CallObject(meth, args); |
|
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
648 Py_DECREF(meth); |
|
5880384d7c71
Quickly renamed the remaining files -- this directory is done.
Guido van Rossum <guido@python.org>
parents:
4503
diff
changeset
|
649 Py_DECREF(args); |
|
2052
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
650 |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
651 return res; |
|
d7e91437f0a2
Lots of changes, most minor (fatal() instead of abort(), use of
Guido van Rossum <guido@python.org>
parents:
1913
diff
changeset
|
652 } |
|
14781
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
653 |
|
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
654 int |
|
35999
9541369b0dca
Add const to several API functions that take char *.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
35935
diff
changeset
|
655 PyModule_AddObject(PyObject *m, const char *name, PyObject *o) |
|
14781
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
656 { |
|
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
657 PyObject *dict; |
| 29579 | 658 if (!PyModule_Check(m)) { |
|
23888
7b66f0034233
PyModule_AddObject(): Added missing exceptions.
Fred Drake <fdrake@acm.org>
parents:
22613
diff
changeset
|
659 PyErr_SetString(PyExc_TypeError, |
|
7b66f0034233
PyModule_AddObject(): Added missing exceptions.
Fred Drake <fdrake@acm.org>
parents:
22613
diff
changeset
|
660 "PyModule_AddObject() needs module as first arg"); |
|
14781
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
661 return -1; |
|
23888
7b66f0034233
PyModule_AddObject(): Added missing exceptions.
Fred Drake <fdrake@acm.org>
parents:
22613
diff
changeset
|
662 } |
| 29579 | 663 if (!o) { |
|
30771
a6879d1733d7
Patch #828384: Don't discard nested exception in AddObject.
Martin v. Löwis <martin@v.loewis.de>
parents:
29579
diff
changeset
|
664 if (!PyErr_Occurred()) |
|
a6879d1733d7
Patch #828384: Don't discard nested exception in AddObject.
Martin v. Löwis <martin@v.loewis.de>
parents:
29579
diff
changeset
|
665 PyErr_SetString(PyExc_TypeError, |
|
a6879d1733d7
Patch #828384: Don't discard nested exception in AddObject.
Martin v. Löwis <martin@v.loewis.de>
parents:
29579
diff
changeset
|
666 "PyModule_AddObject() needs non-NULL value"); |
| 29579 | 667 return -1; |
| 668 } | |
| 669 | |
|
23888
7b66f0034233
PyModule_AddObject(): Added missing exceptions.
Fred Drake <fdrake@acm.org>
parents:
22613
diff
changeset
|
670 dict = PyModule_GetDict(m); |
|
7b66f0034233
PyModule_AddObject(): Added missing exceptions.
Fred Drake <fdrake@acm.org>
parents:
22613
diff
changeset
|
671 if (dict == NULL) { |
|
7b66f0034233
PyModule_AddObject(): Added missing exceptions.
Fred Drake <fdrake@acm.org>
parents:
22613
diff
changeset
|
672 /* Internal error -- modules must have a dict! */ |
|
7b66f0034233
PyModule_AddObject(): Added missing exceptions.
Fred Drake <fdrake@acm.org>
parents:
22613
diff
changeset
|
673 PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__", |
|
7b66f0034233
PyModule_AddObject(): Added missing exceptions.
Fred Drake <fdrake@acm.org>
parents:
22613
diff
changeset
|
674 PyModule_GetName(m)); |
|
7b66f0034233
PyModule_AddObject(): Added missing exceptions.
Fred Drake <fdrake@acm.org>
parents:
22613
diff
changeset
|
675 return -1; |
|
7b66f0034233
PyModule_AddObject(): Added missing exceptions.
Fred Drake <fdrake@acm.org>
parents:
22613
diff
changeset
|
676 } |
|
7b66f0034233
PyModule_AddObject(): Added missing exceptions.
Fred Drake <fdrake@acm.org>
parents:
22613
diff
changeset
|
677 if (PyDict_SetItemString(dict, name, o)) |
|
7b66f0034233
PyModule_AddObject(): Added missing exceptions.
Fred Drake <fdrake@acm.org>
parents:
22613
diff
changeset
|
678 return -1; |
|
7b66f0034233
PyModule_AddObject(): Added missing exceptions.
Fred Drake <fdrake@acm.org>
parents:
22613
diff
changeset
|
679 Py_DECREF(o); |
|
7b66f0034233
PyModule_AddObject(): Added missing exceptions.
Fred Drake <fdrake@acm.org>
parents:
22613
diff
changeset
|
680 return 0; |
|
14781
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
681 } |
|
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
682 |
|
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
683 int |
|
35999
9541369b0dca
Add const to several API functions that take char *.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
35935
diff
changeset
|
684 PyModule_AddIntConstant(PyObject *m, const char *name, long value) |
|
14781
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
685 { |
|
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
686 return PyModule_AddObject(m, name, PyInt_FromLong(value)); |
|
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
687 } |
|
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
688 |
|
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
689 int |
|
35999
9541369b0dca
Add const to several API functions that take char *.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
35935
diff
changeset
|
690 PyModule_AddStringConstant(PyObject *m, const char *name, const char *value) |
|
14781
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
691 { |
|
42013
cd125fe83051
Make identifiers str (not str8) objects throughout.
Martin v. Löwis <martin@v.loewis.de>
parents:
41766
diff
changeset
|
692 return PyModule_AddObject(m, name, PyUnicode_FromString(value)); |
|
14781
081671cef7c1
Andrew Kuchling <akuchlin@mems-exchange.org>:
Fred Drake <fdrake@acm.org>
parents:
14588
diff
changeset
|
693 } |
