mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	Move assertion inside _PyTime_ObjectToTimeval()
Change also _PyTime_FromSeconds() assertion to ensure that the _PyTime_t type is used.
This commit is contained in:
		
							parent
							
								
									53e137c8dd
								
							
						
					
					
						commit
						bbdda21a7a
					
				
					 2 changed files with 14 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -101,7 +101,8 @@ static int
 | 
			
		|||
_PyTime_ObjectToDenominator(PyObject *obj, time_t *sec, long *numerator,
 | 
			
		||||
                            double denominator, _PyTime_round_t round)
 | 
			
		||||
{
 | 
			
		||||
    assert(denominator <= LONG_MAX);
 | 
			
		||||
    assert(denominator <= (double)LONG_MAX);
 | 
			
		||||
 | 
			
		||||
    if (PyFloat_Check(obj)) {
 | 
			
		||||
        double d = PyFloat_AsDouble(obj);
 | 
			
		||||
        return _PyTime_DoubleToDenominator(d, sec, numerator,
 | 
			
		||||
| 
						 | 
				
			
			@ -149,14 +150,20 @@ int
 | 
			
		|||
_PyTime_ObjectToTimespec(PyObject *obj, time_t *sec, long *nsec,
 | 
			
		||||
                         _PyTime_round_t round)
 | 
			
		||||
{
 | 
			
		||||
    return _PyTime_ObjectToDenominator(obj, sec, nsec, 1e9, round);
 | 
			
		||||
    int res;
 | 
			
		||||
    res = _PyTime_ObjectToDenominator(obj, sec, nsec, 1e9, round);
 | 
			
		||||
    assert(0 <= *nsec && *nsec < SEC_TO_NS );
 | 
			
		||||
    return res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
_PyTime_ObjectToTimeval(PyObject *obj, time_t *sec, long *usec,
 | 
			
		||||
                        _PyTime_round_t round)
 | 
			
		||||
{
 | 
			
		||||
    return _PyTime_ObjectToDenominator(obj, sec, usec, 1e6, round);
 | 
			
		||||
    int res;
 | 
			
		||||
    res = _PyTime_ObjectToDenominator(obj, sec, usec, 1e6, round);
 | 
			
		||||
    assert(0 <= *usec && *usec < SEC_TO_US );
 | 
			
		||||
    return res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
| 
						 | 
				
			
			@ -170,12 +177,13 @@ _PyTime_t
 | 
			
		|||
_PyTime_FromSeconds(int seconds)
 | 
			
		||||
{
 | 
			
		||||
    _PyTime_t t;
 | 
			
		||||
    t = (_PyTime_t)seconds;
 | 
			
		||||
    /* ensure that integer overflow cannot happen, int type should have 32
 | 
			
		||||
       bits, whereas _PyTime_t type has at least 64 bits (SEC_TO_MS takes 30
 | 
			
		||||
       bits). */
 | 
			
		||||
    assert((seconds >= 0 && seconds <= _PyTime_MAX / SEC_TO_NS)
 | 
			
		||||
           || (seconds < 0 && seconds >= _PyTime_MIN / SEC_TO_NS));
 | 
			
		||||
    t = (_PyTime_t)seconds * SEC_TO_NS;
 | 
			
		||||
    assert((t >= 0 && t <= _PyTime_MAX / SEC_TO_NS)
 | 
			
		||||
           || (t < 0 && t >= _PyTime_MIN / SEC_TO_NS));
 | 
			
		||||
    t *= SEC_TO_NS;
 | 
			
		||||
    return t;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue