durable_rules 2.0.19 → 2.0.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/src/rules/state.c +22 -2
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4f68e8be526e46e47b904f1b0a0af0c00ffa58f5
4
- data.tar.gz: 31f9916994a145c2c27b891ce93f9d7795b5c22b
3
+ metadata.gz: e31ed367e85b98094b59ee77e36313d16f55050f
4
+ data.tar.gz: 1d569b73e027e8078d4f46d9d464e57ae0a3213e
5
5
  SHA512:
6
- metadata.gz: efd950c601e441e71505e9c43935f112b1a223495d487fff180738356ad3c79431a1aa316df59663d13178c5f6e4aaf46f7e0ab4d7cc6f41c9d1c8a8a1855815
7
- data.tar.gz: cdb9502e03383280a6ee9ef39ea105f5cd75ae1050744f5b0111ab73144a08e56dc79fdb094046013b9be2f4c16c4cbcf75a838afc7f75b6cc16fe571d15afbc
6
+ metadata.gz: 0e9916597fe2a07f54946da6ceeb6dec73d0c1d6ab995b6bf4d8c960c4168ebe320e0419d03e55cda12d7b764bdc8ddf2bce9f62de38a32a7c4a7eef0e223281
7
+ data.tar.gz: e53b6782a8e0d6692890e62ddc500d932ebdc416635bfd07d2538b27ef15944eb8b34a9362d0c3500efa3169db1f3f688bc2a03ba4cd8e755523053b49809b63
data/src/rules/state.c CHANGED
@@ -587,7 +587,6 @@ unsigned int createActionFrame(stateNode *state,
587
587
  leftFrameNode *oldNode,
588
588
  leftFrameNode **newNode,
589
589
  frameLocation *newLocation) {
590
-
591
590
  unsigned int newValueOffset;
592
591
  actionStateNode *actionNode = &state->actionState[reteNode->value.c.index];
593
592
  NEW(leftFrameNode,
@@ -676,6 +675,9 @@ unsigned int deleteMessage(void *tree,
676
675
  unsigned int messageNodeOffset) {
677
676
  messageNode *node = MESSAGE_NODE(state, messageNodeOffset);
678
677
  ruleset *rulesetTree = (ruleset*)tree;
678
+ if (mid == NULL) {
679
+ mid = (char*)node->jo.idBuffer;
680
+ }
679
681
  if (rulesetTree->deleteMessageCallback) {
680
682
  CHECK_RESULT(rulesetTree->deleteMessageCallback(rulesetTree->deleteMessageCallbackContext,
681
683
  &rulesetTree->stringPool[rulesetTree->nameOffset],
@@ -825,7 +827,7 @@ unsigned int getStateNode(void *tree,
825
827
 
826
828
  unsigned int createStateNode(void *tree,
827
829
  char *sid,
828
- stateNode **state) {
830
+ stateNode **state) {
829
831
  unsigned int sidHash = fnv1Hash32(sid, strlen(sid));
830
832
  unsigned int nodeOffset;
831
833
  ruleset *rulesetTree = (ruleset*)tree;
@@ -922,8 +924,19 @@ unsigned int createStateNode(void *tree,
922
924
  unsigned int deleteStateNode(void *tree,
923
925
  stateNode *node) {
924
926
  ruleset *rulesetTree = (ruleset*)tree;
927
+
925
928
  free(node->sid);
926
929
 
930
+ if (node->context.messages) {
931
+ free(node->context.messages);
932
+ node->context.messages = NULL;
933
+ }
934
+
935
+ if (node->context.stateFact) {
936
+ free(node->context.stateFact);
937
+ node->context.stateFact = NULL;
938
+ }
939
+
927
940
  for (unsigned int i = 0; i < rulesetTree->betaCount; ++i) {
928
941
  betaStateNode *betaNode = &node->betaState[i];
929
942
  free(betaNode->leftFramePool.content);
@@ -944,6 +957,13 @@ unsigned int deleteStateNode(void *tree,
944
957
  }
945
958
  free(node->actionState);
946
959
 
960
+ for (unsigned int i = 0; i < MAX_MESSAGE_INDEX_LENGTH * 2; ++i) {
961
+ if (node->messageIndex[i] != UNDEFINED_HASH_OFFSET) {
962
+ deleteMessage(tree, node, NULL, node->messageIndex[i]);
963
+ }
964
+ }
965
+ free(node->messagePool.content);
966
+
947
967
  DELETE(stateNode,
948
968
  rulesetTree->stateIndex,
949
969
  MAX_STATE_INDEX_LENGTH,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: durable_rules
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.19
4
+ version: 2.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jesus Ruiz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-24 00:00:00.000000000 Z
11
+ date: 2020-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake