mapnik/mapnik — comment on commit 39bafa0cf10ba605b8ea77683ffe18ba5343f5d6
File: include/mapnik/feature.hpp line 76
By artemp:

Return value is an index for currently pushed property, mapping_.size() index never exists (max index is always mapping_.size() -1)
This is to make range checking more convenient in feature_impl::put.

push_new needs to be used with care, when schema is unknown prior parsing data (json). There are some assumptions:
mapnik::context_type must always be called from one thread (no context sharing).