0030550: Coding - Integer overflow in Standard_CString HashCodes
[occt.git] / src / Standard / Standard_ShortReal.cxx
CommitLineData
b311480e 1// Copyright (c) 1998-1999 Matra Datavision
973c2be1 2// Copyright (c) 1999-2014 OPEN CASCADE SAS
b311480e 3//
973c2be1 4// This file is part of Open CASCADE Technology software library.
b311480e 5//
d5f74e42 6// This library is free software; you can redistribute it and/or modify it under
7// the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 8// by the Free Software Foundation, with special exception defined in the file
9// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10// distribution for complete text of the license and disclaimer of any warranty.
b311480e 11//
973c2be1 12// Alternatively, this file may be used under the terms of Open CASCADE
13// commercial license or contractual agreement.
7fd59977 14
15#include <Standard_ShortReal.hxx>
16#include <Standard_RangeError.hxx>
17#include <Standard_NullValue.hxx>
7fd59977 18#include <Standard_Stream.hxx>
7fd59977 19#include <Standard_OStream.hxx>
7fd59977 20
2b2be3fb 21//============================================================================
22// function : HashCode
23// purpose :
24//============================================================================
25Standard_Integer HashCode (const Standard_ShortReal theShortReal, const Standard_Integer theUpperBound)
7fd59977 26{
2b2be3fb 27 if (theUpperBound < 1)
28 {
29 throw Standard_RangeError ("Try to apply HashCode method with negative or null argument.");
7fd59977 30 }
2b2be3fb 31 union
32 {
7fd59977 33 Standard_ShortReal R;
2b2be3fb 34 Standard_Integer I;
35 } U;
36 U.R = theShortReal;
37
38 return HashCode (U.I, theUpperBound);
7fd59977 39}