{"record":{"id":"3670e6ac1288aa95","repo":"java-native-access/jna","slug":"must-be-set-from-int-int","errorCode":null,"errorMessage":" must be set from int/int[]","messagePattern":" must be set from int/int\\[\\]","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"contrib/platform/src/com/sun/jna/platform/win32/Winevt.java","lineNumber":387,"sourceCode":"                            throw new IllegalArgumentException(type.name() + \" must be set from short/short[]\");\n                        }\n                        break;\n                    case EvtVarTypeHexInt32:\n                    case EvtVarTypeInt32:\n                    case EvtVarTypeUInt32:\n                        if (value.getClass().isArray() && value.getClass().getComponentType() == int.class) {\n                            Type = type.ordinal() | EVT_VARIANT_TYPE_ARRAY;\n                            Memory mem = new Memory(((int[]) value).length * 4);\n                            mem.write(0, (int[]) value, 0, ((int[]) value).length);\n                            holder = mem;\n                            Count = 0;\n                            field1.writeField(\"pointerValue\", mem);\n                        } else if (value.getClass() == int.class) {\n                            Type = type.ordinal();\n                            Count = 0;\n                            field1.writeField(\"intValue\", value);\n                        } else {\n                            throw new IllegalArgumentException(type.name() + \" must be set from int/int[]\");\n                        }\n                        break;\n                    case EvtVarTypeHexInt64:\n                    case EvtVarTypeInt64:\n                    case EvtVarTypeUInt64:\n                        if (value.getClass().isArray() && value.getClass().getComponentType() == long.class) {\n                            Type = type.ordinal() | EVT_VARIANT_TYPE_ARRAY;\n                            Memory mem = new Memory(((long[]) value).length * 4);\n                            mem.write(0, (long[]) value, 0, ((long[]) value).length);\n                            holder = mem;\n                            Count = 0;\n                            field1.writeField(\"pointerValue\", mem);\n                        } else if (value.getClass() == long.class) {\n                            Type = type.ordinal();\n                            Count = 0;\n                            field1.writeField(\"longValue\", value);\n                        } else {\n                            throw new IllegalArgumentException(type.name() + \" must be set from long/long[]\");","sourceCodeStart":369,"sourceCodeEnd":405,"githubUrl":"https://github.com/java-native-access/jna/blob/d036ad9781adad4b66693e8fa7098e4ac665e0a3/contrib/platform/src/com/sun/jna/platform/win32/Winevt.java#L369-L405","documentation":"For EvtVarTypeHexInt32, EvtVarTypeInt32 and EvtVarTypeUInt32, setValue requires a primitive int (getClass() == int.class) or an int[] array. Other numeric types (Integer wrapper, long, W32HKEY etc.) raise IllegalArgumentException '<TypeName> must be set from int/int[]'.","triggerScenarios":"setValue(EVT_VARIANT_TYPE.EvtVarTypeUInt32, longValue) — a long passed for a 32-bit field; or an Integer boxed in a collection, since getClass() is Integer.class not int.class.","commonSituations":"Values from config parsed as long; counts/flags stored in Long variables; values boxed in ArrayList<Integer> then passed via toArray() producing Integer[].","solutions":["Cast to int: (int) longValue (verify range 0..0xFFFFFFFF for unsigned types first)","Convert Integer[]/List<Integer> into int[] with a loop or IntStream.of(...).toArray()","Pass literals directly — a Java int literal has class int.class and passes"],"exampleFix":"// before\nvariant.setValue(EVT_VARIANT_TYPE.EvtVarTypeUInt32, longValue);\n// after\nif (longValue < 0 || longValue > 0xFFFFFFFFL) throw new IllegalArgumentException(\"out of UINT32 range\");\nvariant.setValue(EVT_VARIANT_TYPE.EvtVarTypeUInt32, (int) longValue);","handlingStrategy":"type-guard","validationCode":"if (value instanceof Long) {\n    long l = (Long) value;\n    if (l < 0 || l > 0xFFFFFFFFL) throw new IllegalArgumentException(\"UINT32 out of range\");\n    value = (int) l;\n}","typeGuard":"boolean isIntVariant(Object v) {\n    return v != null && (v.getClass() == int.class || v.getClass() == int[].class);\n}","tryCatchPattern":"try {\n    variant.setValue(EVT_VARIANT_TYPE.EvtVarTypeUInt32, value);\n} catch (IllegalArgumentException e) {\n    variant.setValue(EVT_VARIANT_TYPE.EvtVarTypeUInt32, (int) ((Number) value).longValue());\n}","preventionTips":["Cast longs to int after a UINT32 range check","Convert List<Integer>/Integer[] to primitive int[] before setValue","Pass int literals directly — they have class int.class and pass the check"],"tags":["windows-eventlog","jna","type-mismatch"],"backgroundTag":"type-mismatch","analyzedSha":"d036ad9781adad4b66693e8fa7098e4ac665e0a3","analyzedAt":"2026-09-12T06:50:59.239Z","contentChangedAt":"2026-09-12T06:50:59.239Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}