Changeset 17780 in josm


Ignore:
Timestamp:
2021-04-14T20:00:37+02:00 (3 years ago)
Author:
simon04
Message:

see #20744, fix #20764 - MapCSS: fix NPE

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/mappaint/mapcss/ExpressionFactory.java

    r17769 r17780  
    5656
    5757        static Factory ofNumberVarArgs(double identity, DoubleUnaryOperator unaryOperator, DoubleBinaryOperator operator) {
    58             return args -> env -> args.isEmpty()
    59                     ? identity
    60                     : args.size() == 1
    61                     ? unaryOperator.applyAsDouble(Cascade.convertTo(args.get(0).evaluate(env), Double.class))
    62                     : args.stream()
    63                     .map(arg -> Cascade.convertTo(arg.evaluate(env), Double.class))
    64                     .filter(Objects::nonNull)
    65                     .reduce(operator::applyAsDouble)
    66                     .orElse(null);
     58            return args -> env -> {
     59                if (args.isEmpty()) {
     60                    return identity;
     61                } else if (args.size() == 1) {
     62                    return unaryOperator.applyAsDouble(Cascade.convertTo(args.get(0).evaluate(env), Double.class));
     63                } else {
     64                    return args.stream()
     65                            .map(arg -> Cascade.convertTo(arg.evaluate(env), Double.class))
     66                            .filter(Objects::nonNull)
     67                            .reduce(operator::applyAsDouble).orElse(null);
     68                }
     69            };
    6770        }
    6871
  • trunk/test/unit/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParserTest.java

    r17770 r17780  
    613613                "neg: -13;" +
    614614                "not: !0;" +
     615                "null1: tag(x1) + tag(x2);" +
     616                "null2: 3 + tag(does_not_exist) + 5;" +
    615617                "}");
    616618        source.loadStyleSource();
     
    623625        assertEquals(-13.0, mc.getCascade(null).get("neg"));
    624626        assertEquals(true, mc.getCascade(null).get("not"));
     627        assertNull(mc.getCascade(null).get("null1"));
     628        assertEquals(8.0, mc.getCascade(null).get("null2"));
    625629    }
    626630
Note: See TracChangeset for help on using the changeset viewer.