under some circumstances, like certain input lines that have long comments, the code here can cause an underflow in size_t which casts to a very large integer during comparison and results in the number of tokens being over-reported (max of 40). Most of these tokens are of course garbage. Changing this `len` variable to an integer permits it to be less than zero, thus allowing an exit from the `while` at L665.
* removing reference to strncpy
* Fixing memory problems with test_toolkit
Fixes memory leaks and some minor refactoring.
* Update test_toolkit.hpp
removing crtdbg.h from header
* Update CMakeLists.txt
Restoring test_net_builder to test_toolkit.exe
* Cleaning up include statements adding crtdbg.h
* Fixing index error in test
* Add more analysis options to the API (issue #425)
* Fixed epanet2_enums.h
* Eliminates use of temporary linked lists to process Patterns & Curves (issue #449)
* Update input2.c
* Bug fix for 2Comp and LIFO tank mixing models (issue #448)
* Triggering build to update benchmarks
* Added new reg tests
Updating reference build id
* Initial commit list
generic linked list
* Update test_list.cpp
Tests are passing
* Update list.h
Adding documentation
* Fix typo
* Fixing bug in head_list
* Fixing indentation
* Fixed memory leak
Fixed memory leak in test_head_list
* Clean up and inline comments
* Updating file headers
* Update list.c
Updating in line comments.
* Update test_list.cpp
* Fixing indent
Spaces not tabs
* Update list.c
Fixing indent
* Update test_list.cpp
Updating file header to reflect proper attribution
* Expanding test
Added test where data is a struct
* Fixing indent
* Work in progress
* Reorganized to contain list abstraction
* Update list.c
* Refactoring head_list and tail_list
Simplifying head and tail list. Adding delete_node() to list API.
* Update test_list.cpp
* Update test_list.cpp
Fixing bug on gcc
* Fixing bug
* Fixing bug on gcc
* Update CMakeLists.txt
Adding test_list to ctest
* Fixes memory leak in EN_addnode() (#455)
* Fixing memory leak in EN_addnode()
* Separating test_net_builder from test_toolkit
Making test_net_builder a standalone test
* Removing BOOST_TEST_MAIN
* Work in progress
* Updating unit tests
* Fixing compilation bug on gcc
* Work in progress
compiles with warnings, definitely not working
* Update demand.h
* Work in progress
Implementing demand_list
* Work in progress
Creating function for validateing element ID strings
* Work in progress
Refactoring cstr_copy and adding test
* Update cstr_helper.c
fixing indentation
* Update cstr_helper.c
Fixing indentation
* Update test_cstrhelper.cpp
Fixed mem leak
* Adding element id validity checks
* Adding element id validity check
Adding checks for element set id functions
* Fixing build warnings on gcc
* Update errror code from 250 to 252
* Work in progress
Implementing generic demand pattern lists. Compiles but does not run.
* Update demand.c
Work in progress
* Return object index from EN_addnode and EN_addlink (issue #432)
Adds an output argument to EN_addnode and EN_addlink that returns the index of the newly added object.
Also refactors the validity check on object ID names.
* Fixed compilation errors
* Update test_node.cpp
* Create test_demand_data.cpp
* test demand data passing
* Work in progress
Fixing problems when demand lists are null
* Passing open and close test
* get/set demand name are passing
* Updated criteria for valid object ID name
* Work in progress
* Work in progress
Working on demand lists
* Work in progress
Fixing memory leaks
Unit tests passing
* Cleaning up build on gcc
* Cleaning up gcc build
* Fixing bug
* Working on gcc bug
Tests are passing on Appveyor
* Update inpfile.c
Trying to isolate bug
* GCC Bug
* Refactored xstrcpy function
* Update inpfile.c
Testing linux build
* Update epanet.c
Trying to isolate bug
* updating get demand name and write demands
Everything passing locally
* Update test_project.cpp
Isolating bug on gcc
* Isolating bug
Not writing demand section of input file should eliminate it
* Update demand.c
Fixing bug in get_category_name when category_name is NULL
* Restoring write_demands section in saveinpfile
* Update test_demand_data.cpp
Adding index to addnode calls. Fixing indent
* Update demand.c
* Reverted handling of default pattern
When creating demands, no pattern is marked with a zero. Then when data is adjusted it gets updated to default.
* Update epanet.c
Updating EN_getnodevalue() and EN_setnodevalue() to process the primary demand located at the head of the demand list
* Update demand.c
* Work in progress
code cleanup, addressed issue raised in review, and implemented EN_adddemand()
* Adding key and search to list
* Adding remove node method to generic list
* Adding remove demand method to toolkit
* Fix bug and test remove demand
* Fix problems with setting tank parameters (issue #464 )
* Fixed NULL pointer error, if no label is provided after the rule keyword.
* Create Makefile2.bat
Co-Authored-By: Demetrios G. Eliades <eldemet@users.noreply.github.com>
Co-Authored-By: Elad Salomons <selad@optiwater.com>
* Create LICENSE
* Fixed NULL pointer error, if no label is provided after the rule keyword.
Add NULL guard in freerules function. Use strncat and strncpy to ensure
the buffer lengths are adhered to.
* For "conditional" do delete a node connected to a link
For "conditional" deletion the node is deleted only if all of its links have been explicitly deleted beforehand #473
Co-Authored-By: Lew Rossman <lrossman@outlook.com>
* Create CODE_OF_CONDUCT.md
* Refactors the API's demand editing functions
* Update test_demand.cpp
* Update CODE_OF_CONDUCT.md
* Update rules.c
Fix broken win build script
* Updates to doc files
* Documentation edits
* Update Makefile.bat
Updates on the Microsoft SDK 7.1 compilation script to generate runepanet.exe and to use the \include\epanet2.def
* Update Makefile2.bat
Modified epanet2.exe to runepanet.exe, for consistency.
* Delete epanet2.def
Deleted the redundant `epanet2.def` file in the WindSDK folder
* Minor format change to status report
* Removing status reports from CI testing
* rm WinSDK folder and update Makefiles
Co-Authored-By: Demetrios G. Eliades <eldemet@users.noreply.github.com>
* Restored CI testing of status reports
* Removes _DEBUG directives from all source files
This commit removes the #ifdef _DEBUG statements at the top of all source code files per issue #482. It also updates the doc files to stress that the speedup observed for hydraulic analysis with the MMD node re-ordering method only applies to single period runs.
* Fix refactor of types.h
* updates authors
* updates AUTHORS and generator script
* Update run\CMakeLists.txt
* add help file win_build.md
Co-Authored-By: Elad Salomons <selad@optiwater.com>
* move win_build.md to root dir and renaiming to BUILDING.md
* Move BuildAndTest.md to the tools directory
* Update BUILDING.md
* Update BUILDING.md
* Update BUILDING.md
* Fixes problem with findpattern() function (issue #498)
* Change default properties for new pipe created with EN_addlink (issue #500)
* Numerous updates to project documentation
* Adds tank overflow feature
* Updating docs for tank overflow feature
* Updating VB include files
* Update input3.c
* Identifies overflowing tank in Status Report
* Update Makefile.bat
* Update Makefile2.bat
#508
* rethinking the python wrapper (#511)
* renames certain function parameter declarations and removes double pointer call from the deleteproject function
* deprecates conditonal compilation, removes python-specific headers and function renaming
* fixes tests and docs
* fixes test
* PDA fixes
* Minor update to force new CI test
* Another minor change to force another CI test
* Fixes Overflow and PDA tests not being run
* Fix EN_getElseaction and EN_setelseaction
Co-Authored-By: Andreas Ashikkis <andreasashikkis@users.noreply.github.com>
* Add -MT switch for CMake Windows build
* Updates to the docs
* Update BUILDING.md
* Build script updates
* Fixes EN_setlinkvalue bug
* fix in EN_deleteLink
when pipes are deleted via deletelink it also deletes comment of last link
Co-Authored-By: Pavlos Pavlou <pavlou.v.pavlos@ucy.ac.cy>
* rm set to null in functions EN_deletenode, EN_deletelink
* trial actions config
* Update ccpp.yml
* welcome to the Actions beta
* fixes mkstemp file handle-leaking behavior (#529)
* reverts posix include (#533)
... because it is not needed
* Fixes bugs in pump and demand head loss gradients
* Removed dependence on unistd.h in project.c
Travis CI failed because system could not find unistd.h.
* getTmpName() and xstrcpy() made safer
* Fixed use of strncpy in xstrcpy()
* Refactor of hydcoeffs.c
Simplifies and unifies how limit on head gradient at low flow is handled.
* Update ReleaseNotes2_2.md
* Return error if node/link name is too long (#535)
* co-authored with @ehsan-shafiee
* removes errant slashes
* Throws correct error for ID name too long
* Revert "Throws correct error for ID name too long"
This reverts commit 57b4873f5882cb9fd983f7e1e5a703b9e442cd74.
* fixes#534 by bubbling error codes up from add node/link internal functions
* fixes tests on Mac at least
* fixes improper success code
* Error 252 (not 250) returned for ID name too long.
From errors.dat: DAT(252,"invalid ID name")
* Fixes problems with EN_addnode() (#543)
See issue #542 . Also modifies unit test test_node to check that fixup works.
* Adds EN_getresultindex function to the API
See issue #546 . Also fixes a small bug in project.c.
* Adds link vertex get/set functions to the API
* Fixes to EN_addlink and EN_deletelink
* Updates the docs
* Bug fix for EN_setcurve
Adjusts params of any pump that uses the curve whose data is modified by EN_setcurve or EN_setcurvevalue (issue #550 ).
* Bug fix for EN_getrule
Fixes possible seg fault condition in EN_getrule. Also defines EN_MISSING as an API constant since it can be assigned internally to several variables that are retrievable by the API.
* Updating the docs
* Adds error check to EN_setheadcurveindex
See issue #556 .
* Update epanet2.pas
* Incorrect characterd
There was a character ’ instead of ' which created an error when compiling LaTeX.
* fixes a crashing issue in freedata (#559)
The freedata function used cached values for sizes of certain arrays found in the parser struct. However, now that the network is mutable, those values can become invalid. Relying instead on the actual array lengths prevents freeing unallocated memory, or ignoring cleanup on newly created elements.
* Bug fix for valvecheck function
See issue #561
* Restored prior update to project.c that got overwritten
* Fixed editing errors made to project.c
* PDF Guide
PDF users' guide for EPANET, and some minor corrections to readme.md to fix some formatting issues.
* HTML Users Guide
* Fixes a "copy over" bug in input3.c
The copying of one input line token over another was causing a compilation error under Clang. With v2.2 this copying is no longer needed so the line of code in question was simply deleted.
This commit also deletes the HTML and Latex output generated by running Doxygen that got added from the previous update to dev since they don't really belong in a source code repo.
* Correction made to doc files
The output-format.dox file was deprecated and not included in the doxyfile so it was deleted. The description of the format of of the Energy Usage section of the binary output in toolkit-files.dox was corrected.
* Update ReleaseNotes2_2.md
I added the v2.2 contributing authors to the notes. I checked PR's from 2017 and beyond and these were the only names I could find. Please append any one I might have missed.
* Fixes problem with re-opening const. HP pumps
See latest comments in issue #528. Also, the setlinkflow() function was deleted as it was never called anywhere.
* Update README.md (#539)
* Update README.md
* Update README.md
Some section titles were re-named to conform to GitHub guidelines and the OWA info was moved to a CREDITS section.
* Update README.md
Added link to the Community Forum page.
* Replaced OWA copyright with "(see AUTHORS)".
* Update AUTHORS
Copied format used by the OWA-SWMM project.
* Update README.md
The Disclaimer section was edited to reflect that there actually is a "collaborative" connection between USEPA and OWA.
* updates CI badges
* cleanup of readme links and unused files
* possessive vs contraction
* adding contributor to notes
* Update README.md
* Update README.md
Some section titles were re-named to conform to GitHub guidelines and the OWA info was moved to a CREDITS section.
* Update README.md
Added link to the Community Forum page.
* Replaced OWA copyright with "(see AUTHORS)".
* Update AUTHORS
Copied format used by the OWA-SWMM project.
* Update README.md
The Disclaimer section was edited to reflect that there actually is a "collaborative" connection between USEPA and OWA.
The freedata function used cached values for sizes of certain arrays found in the parser struct. However, now that the network is mutable, those values can become invalid. Relying instead on the actual array lengths prevents freeing unallocated memory, or ignoring cleanup on newly created elements.
* co-authored with @ehsan-shafiee
* removes errant slashes
* Throws correct error for ID name too long
* Revert "Throws correct error for ID name too long"
This reverts commit 57b4873f5882cb9fd983f7e1e5a703b9e442cd74.
* fixes#534 by bubbling error codes up from add node/link internal functions
* fixes tests on Mac at least
* fixes improper success code
* Error 252 (not 250) returned for ID name too long.
From errors.dat: DAT(252,"invalid ID name")
* renames certain function parameter declarations and removes double pointer call from the deleteproject function
* deprecates conditonal compilation, removes python-specific headers and function renaming
* fixes tests and docs
* fixes test
this quite sizable commit does several things, but is primarily
focussed on building a toolkit that can run simultaneous
simulations/analyses within a shared memory space. Versions <=2.1 use a
long list of global variables that prevent multiple instantiations on
linux systems without resorting to compilation tricks (like duplicate
binaries or similar via static linkage). This version uses a single "Project" pointer to encapsulate
the network and analysis data. There are no changes to existing algo
implementations other than to accomodate dereferencing of the passed-in
pointers. A more detailed list of major changes below:
- mirrors all “ENxxxx” function calls with “EN_xxxx” versions (note the
underscore) that take an extra first parameter: a pointer to an
EN_Project struct, which contains all network, hydraulic, quality, and
associated data.
- tweaks some code formatting to make it more readable
- removes some deprecated/commented code that was sufficiently old
- fixes implicit type-cast warnings
* Added ENaddnode and ENaddlink functions
* More memory reallocations
* Added ENInit, ENsetheadcurveindex
* Added ENdeletelink and ENdeletenode
* restored default behavior for float types
* fixed type
* Added docstrings for ENinit
* cleanup change
* moves global rule variables to vars.h
* migrates rule structs to typedefs
for better readability
* char types to proper enums
fixes#93
* Change some variable declarations for compatibility
Changes to keep compatibility with C89 compilers: variables must be
declared at the top of the functions. Remove the use of EN_LinkType in
function call as it is not compatible with ENgetnodetype.
* Moved declaration of idstodelete to top of function
* Updated ENinit function and headers
Updated header files with new functions
Updated def file with new functions
For ENinit changes names of parameters #98
Added enum for headloss formula
* Missed these files in 1a033fc
* migrates char types to enums fixes#93,
supports unified link/node type enums, rather than public/private
redefinitions
* removing links in reverse-index order maintains proper indexing fixes#96
* style
* clarifies curve getter units issue (dox)
closes#95
* fixes link/node confusion in ENsetlinktype
partially reverts a3bce95dc330a5a297634a303d438e2e1bc41cc9
* partial compilation fix
* fixes dox issue
* fixes allocation issues with enums
- updates style in various places
- introduces FlowDirection enum
- use snprintf to prevent overflow
* fixes enum type cast
* updated mac project settings
* Use of _snprintf on Windows and remove DLLEXPORT from mempool.h
snprintf it not compatible on Windows so we use _snprintf
mempool gave starnge compilation errors while removing DLLEXPORT worked.
Not sure why these functions needed to be exposed in the DLL?
* Revert "Use of _snprintf on Windows and remove DLLEXPORT from mempool.h"
This reverts commit 6238f77d47fa0feaabe5836043c006937de433a2.
* use of _snprintf instead of snprintf on Windows and removed DLLEXPORT from mempool.h
Had compilation errors on mempool.h. Removed DLLEXPORT so solve it. Not
sure why there was a need to expose these functions?
* Shift indices for Links in ENaddnode
Need to shift indices for Links not just Pipes since a pump could be
connected directly to a reservoir. Also set the defult base demand to
zero (was 5).
* Set defualts for madatory link properties in ENaddlink and small fix for ENsetheadcurveindex
Relates to #102 and closes#103
* wraps globals into structs, duplicates api functions with objective versions
* parse and serialize Comment field for network elements
related to #47
* adds getter for head/efficiency curve
in EN_getlinkvalue
* adds getter for event node index
… to return the index of the junction (tank) that triggered the event.
* fixes edge case in parsing
… where inp files without demands in [JUNCTIONS] and without any
[DEMAND] categories will fail.
* adds freeing function for project pointer
* removes redundant string literals, fixes overrun issue in error message getter function
* check for hydraulics already closed
* moving error definitions to data file
* deprecates ENR err message getter (unused)
* updates location of errors data file
also begins to expose blind structs to curves and patterns,
anticipating buildout of APIs for those.
* updates CLI output to reflect executable name as invoked
relates to #109
* Feature nrtest (#131)
* Initial commit EPANET testing tools.
* Initial commit for epanet-nrtestsuite
* SWIG wrapper for EPANET outputapi (#118)
* Removed pervious version of outputapi and wrapper
* SWIG wrapper for EPANET outputapi
* Patching cmake build script fixed target for outputapi
* Build failing on deprecated test script
* Minor changes. Responding to review comments.
* Feature nrtest (#121)
* Configured python setup to automatically build nrtest tools.
* Working on build / testing automation
* Adding EPANET 2.0.12 benchmark
* Updated Travis yml to run nrtest
* Fixing InsecurePlatformWarning
* Fixing InsecurePlatformWarning again
* Fixing InsecurePlatformWarning
* Fixing InsecurePlatformWarning
* Fixing InsecurePlatformWarning
* Update .travis.yml
* Update .travis.yml
* Update .travis.yml
* Update .travis.yml
* Working on configuring python environment and building test tools under Travis CI.
* Making gen-config.sh and run-nrtest.sh executable
* Debugging .travis.yml
* Debugging .travis.yml
* Debugging .travis.yml again
* Debugging .travis.yml again
* debugging travis setup
* debugging Travis setup
* debugging Travis setup
* debugging Travis setup
* debugging Travis setup
* debugging Travis setup
* debugging Travis setup
* debugging Travis setup
* debugging Travis setup
* debugging Travis setup
* debugging Travis setup
* Fixing bug with __strncpy_chk destlen < len
* nrtesting clean up
* re-implements fixes from:
5eead5ae403c788567a4
* removes extraneous build files, moves cmake and updates travis
* mirror of 9b37035560f9683f1514b439f7586a5c17bca5bf
* Move some variable declarations
* More variable declarations
* Fix TmpDir
* Allocate _defaultModel
* Fix EN_addcurve funcrion
* Fix for inpfile
* Fix writeRuleinInp call
* Set MAXMSG to 79 chars
* Fix for flow direction
* Refactoring testing related python packages and SWIG wrapper bug fix (#139)
* Eliminated epanet-reader package. Removed numpy dependency from epanet-output. Fixed reference counting bug in SWIG wrapper. Added error checking to run_nrtest.sh. Added nrtest package to requirements file.
* changing buildhome directory
* Fixing bug related to preprocessor definition of PI