An error occurred fetching the project authors.
  1. 19 Dec, 2005 1 commit
  2. 10 Dec, 2005 1 commit
    • Jeremy Hylton's avatar
      Add const to several API functions that take char *. · af68c874
      Jeremy Hylton authored
      In C++, it's an error to pass a string literal to a char* function
      without a const_cast().  Rather than require every C++ extension
      module to put a cast around string literals, fix the API to state the
      const-ness.
      
      I focused on parts of the API where people usually pass literals:
      PyArg_ParseTuple() and friends, Py_BuildValue(), PyMethodDef, the type
      slots, etc.  Predictably, there were a large set of functions that
      needed to be fixed as a result of these changes.  The most pervasive
      change was to make the keyword args list passed to
      PyArg_ParseTupleAndKewords() to be a const char *kwlist[].
      
      One cast was required as a result of the changes:  A type object
      mallocs the memory for its tp_doc slot and later frees it.
      PyTypeObject says that tp_doc is const char *; but if the type was
      created by type_new(), we know it is safe to cast to char *.
      af68c874
  3. 14 Sep, 2005 1 commit
  4. 26 Aug, 2005 1 commit
  5. 30 Mar, 2005 1 commit
  6. 03 Mar, 2005 2 commits
  7. 07 Aug, 2004 1 commit
    • Michael W. Hudson's avatar
      Fix · 34553388
      Michael W. Hudson authored
      [ 991812 ] PyArg_ParseTuple can miss errors with warnings as exceptions
      
      as suggested in the report.
      
      This is definitely a 2.3 candidate (as are most of the checkins I've
      made in the last month...)
      34553388
  8. 10 Jul, 2004 1 commit
  9. 03 May, 2003 1 commit
  10. 18 Apr, 2003 1 commit
  11. 17 Apr, 2003 1 commit
    • Thomas Heller's avatar
      SF # 595026: support for masks in getargs.c. · a4ea603b
      Thomas Heller authored
      New functions:
        unsigned long PyInt_AsUnsignedLongMask(PyObject *);
        unsigned PY_LONG_LONG) PyInt_AsUnsignedLongLongMask(PyObject *);
        unsigned long PyLong_AsUnsignedLongMask(PyObject *);
        unsigned PY_LONG_LONG) PyLong_AsUnsignedLongLongMask(PyObject *);
      
      New and changed format codes:
      
      b unsigned char 0..UCHAR_MAX
      B unsigned char none **
      h unsigned short 0..USHRT_MAX
      H unsigned short none **
      i int INT_MIN..INT_MAX
      I * unsigned int 0..UINT_MAX
      l long LONG_MIN..LONG_MAX
      k * unsigned long none
      L long long LLONG_MIN..LLONG_MAX
      K * unsigned long long none
      
      Notes:
      
      * New format codes.
      
      ** Changed from previous "range-and-a-half" to "none"; the
      range-and-a-half checking wasn't particularly useful.
      
      New test test_getargs2.py, to verify all this.
      a4ea603b
  12. 29 Mar, 2003 1 commit
  13. 04 Feb, 2003 1 commit
  14. 24 Jan, 2003 1 commit
  15. 21 Nov, 2002 1 commit
  16. 28 Jul, 2002 1 commit
  17. 04 Apr, 2002 1 commit
  18. 09 Jan, 2002 1 commit
  19. 03 Dec, 2001 1 commit
    • Tim Peters's avatar
      mysnprintf.c: Massive rewrite of PyOS_snprintf and PyOS_vsnprintf, to · faad5ad5
      Tim Peters authored
      use wrappers on all platforms, to make this as consistent as possible x-
      platform (in particular, make sure there's at least one \0 byte in
      the output buffer).  Also document more of the truth about what these do.
      
      getargs.c, seterror():  Three computations of remaining buffer size were
      backwards, thus telling PyOS_snprintf the buffer is larger than it
      actually is.  This matters a lot now that PyOS_snprintf ensures there's a
      trailing \0 byte (because it didn't get the truth about the buffer size,
      it was storing \0 beyond the true end of the buffer).
      
      sysmodule.c, mywrite():  Simplify, now that PyOS_vsnprintf guarantees to
      produce a \0 byte.
      faad5ad5
  20. 29 Nov, 2001 1 commit
    • Tim Peters's avatar
      SF bug 486278 SystemError: Python/getargs.c:1086: bad. · cffed4bc
      Tim Peters authored
      vgetargskeywords():  Now that this routine is checking for bad input
      (rather than dump core in some cases), some bad calls are raising errors
      that previously "worked".  This patch makes the error strings more
      revealing, and changes the exceptions from SystemError to RuntimeError
      (under the theory that SystemError is more of a "can't happen!" assert-
      like thing, and so inappropriate for bad arguments to a public C API
      function).
      cffed4bc
  21. 28 Nov, 2001 4 commits
  22. 27 Oct, 2001 15 commits
    • Tim Peters's avatar
      vgetargskeywords() · c2f01120
      Tim Peters authored
      + Squash another potential buffer overrun.
      + Simplify the keyword-arg loop by decrementing the count of keywords
        remaining instead of incrementing Yet Another Variable; also break
        out early if the number of keyword args remaining hits 0.
      
      Since I hit the function's closing curly brace with this patch, that's
      enough of this for now <wink>.
      c2f01120
    • Tim Peters's avatar
      vgetargskeywords: Now that it's clear that nkwlist must equal max, and · b639d497
      Tim Peters authored
      we're ensuring that's true during the format parse, get rid of nkwlist.
      b639d497
    • Tim Peters's avatar
    • Tim Peters's avatar
      vgetargskeywords: Verify kwlist has the required length while parsing · 62d48e17
      Tim Peters authored
      the format, instead of waiting until after we can overindex it by
      mistake.
      62d48e17
    • Tim Peters's avatar
      vgetargskeywords: Removed all PyErr_Clear() calls. It's possible that · 0af4916a
      Tim Peters authored
      this routine will report an error now when it didn't before, but, if so,
      it's a legitimate error that should never have been suppressed.
      0af4916a
    • Tim Peters's avatar
      vgetargskeywords: The keywords arg is a dict (if non-NULL), so use the · 077f574d
      Tim Peters authored
      dict API everywhere on it instead of sometimes using the slower mapping
      API.
      077f574d
    • Tim Peters's avatar
      vgetargskeywords: Removed one of the mysterious PyErr_Clear() calls. · 61dde63e
      Tim Peters authored
      The "need" for this was probably removed by an earlier patch that stopped
      the loop right before it from passing NULL to a dict lookup routine.
      I still haven't convinced myself that the next loop is correct, so am
      leaving the next mysterious PyErr_Clear() call in for now.
      61dde63e
    • Tim Peters's avatar
      vgetargskeywords: · b054be41
      Tim Peters authored
      + Generally test nkeywords against 0 instead of keywords against NULL
        (saves a little work if an empty keywords dict is passed, and is
        conceptually more on-target regardless).
      + When a call erroneously specifies a keyword argument both by position
        and by keyword name:
          - It was easy to provoke this routine into an internal buffer overrun
            by using a long argument name.  Now uses PyErr_format instead (which
            computes a safe buffer size).
          - Improved the error msg.
      b054be41
    • Tim Peters's avatar
      vgetargskeywords: · b0872fc8
      Tim Peters authored
      + Got rid of now-redundant dict typecheck.
      + Renamed nkwds to nkwlist.  Now all the "counting" vrbls have names
        related to the things they're counting in an obvious way.
      b0872fc8
    • Tim Peters's avatar
      vgetargskeywords: · 6fb2635f
      Tim Peters authored
      + Renamed argslen to nargs.
      + Renamed kwlen to nkeywords.  This one was especially confusing because
        kwlen wasn't the length of the kwlist argument, but of the keywords
        argument.
      6fb2635f
    • Tim Peters's avatar
      vgetargskeywords: · 28bf7a97
      Tim Peters authored
      + Removed now-redundant tuple typecheck.
      + Renamed "tplen" local to "argslen" (it's the length of the "args"
        argument; I suppose "tp" was for "Tim Peters should rename me
        someday <wink>).
      28bf7a97
    • Tim Peters's avatar
      PyArg_ParseTupleAndKeywords: return false on internal error, not -1 (I · f8cd3e86
      Tim Peters authored
      introduced this bug just a little while ago, when *adding* internal error
      checks).
      
      vgetargskeywords:  Rewrote the section that crawls over the format string.
      + Added block comment so it won't take the next person 15 minutes to
        reverse-engineer what it's doing.
      + Lined up the "else" clauses.
      + Rearranged the ifs in decreasing order of likelihood (for speed).
      f8cd3e86
    • Tim Peters's avatar
      PyArg_ParseTupleAndKeywords: do basic sanity checks on the arguments, · 45772cde
      Tim Peters authored
      and raise an error if they're insane.
      vgetargskeywords:  the same, except that since this is an internal routine,
      just assert that the arguments are sane.
      45772cde
    • Tim Peters's avatar
      tuple(3,4,5,x=2) dumped core on my box. vgetargskeywords() overindexed · a9f4739a
      Tim Peters authored
      the kwlist vector whenever there was a mix of positional and keyword
      arguments, and the number of positional arguments exceeded the length
      of the kwlist vector.  If there was just one more positional arg than
      keyword, the kwlist-terminating NULL got passed to PyMapping_HasKeyString,
      which set an internal error that vgetargskeywords() then squashed (but
      it's impossible to say whether it knew it was masking an error).  If
      more than one more positional argument, it went on to pass random trash
      to PyMapping_HasKeyString, which is why the example at the start
      happened to kill the process.
      
      Pure bugfix candidate.
      a9f4739a
    • Tim Peters's avatar
      vgetargskeywords(): remove test that can't succeed. Not a bugfix, just · f4331c1c
      Tim Peters authored
      removing useless obfuscation.
      f4331c1c