# HG changeset patch # User Andrey Skvortsov # Date 1551773976 -10800 # Node ID 27955f010b2316d449eb75ccf01fd27240f39c0a # Parent c48470e2b3833c6333e7653e1b90419b0875b9c3 Fix crash if LD input contact isn't connected Traceback (most recent call last): File "/home/developer/WorkData/PLC/beremiz/beremiz/BeremizIDE.py", line 339, in OnMethod obj.CTR.CallMethod('_'+meth) File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1996, in CallMethod getattr(self, method)() File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 1134, in _Build IECGenRes = self._Generate_SoftPLC() File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 746, in _Generate_SoftPLC if self._Generate_PLC_ST(): File "/home/developer/WorkData/PLC/beremiz/beremiz/ProjectController.py", line 763, in _Generate_PLC_ST self._getIECgeneratedcodepath()) File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCControler.py", line 456, in GenerateProgram self.ProgramChunks = GenerateCurrentProgram(self, self.Project, errors, warnings) File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1762, in GenerateCurrentProgram generator.GenerateProgram() File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 478, in GenerateProgram self.GeneratePouProgram(pou_name) File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 260, in GeneratePouProgram program = pou_program.GenerateProgram(pou) File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1718, in GenerateProgram self.ComputeProgram(pou) File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1028, in ComputeProgram self.GenerateBlock(instance, block_infos, body, None) File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1144, in GenerateBlock expression = self.ComputeExpression(body, connections, executionOrderId > 0) File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1373, in ComputeExpression paths = self.GeneratePaths(connections, body, order, to_inout) File "/home/developer/WorkData/PLC/beremiz/beremiz/PLCGenerator.py", line 1344, in GeneratePaths elif isinstance(result[0], list): IndexError: list index out of range Close #70 diff -r c48470e2b383 -r 27955f010b23 PLCGenerator.py --- a/PLCGenerator.py Fri Mar 01 16:55:16 2019 +0300 +++ b/PLCGenerator.py Tue Mar 05 11:19:36 2019 +0300 @@ -1335,6 +1335,9 @@ contact_info = (self.TagName, "contact", next.getlocalId()) variable = str(self.ExtractModifier(next, [(next.getvariable(), contact_info + ("reference",))], contact_info)) result = self.GeneratePaths(next.connectionPointIn.getconnections(), body, order) + if len(result) == 0: + raise PLCGenException(_("Contact \"{a1}\" in POU \"{a2}\" must be connected."). + format(a1=next.getvariable(), a2=self.Name)) if len(result) > 1: factorized_paths = self.FactorizePaths(result) if len(factorized_paths) > 1: